实现办公移动服务的Web服务 [英] Implement a webservice for office mobile service

查看:55
本文介绍了实现办公移动服务的Web服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我想编写一个用于Outlook文本消息的Web服务。我使用 Office 2010移动服务指南编写此代码

这是我的代码:

Hi
I want to write a web service to use in outlook text messaging. I wrote this code using Office 2010 Mobile Service Guidelines
this is my code:

using System;
using System.IO;
using System.Web;
using System.Xml;
using System.Data;
using System.Text;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Security.Authentication;
using System.Collections.Generic;
using System.Web.Services.Description;
using System.ComponentModel;

namespace OMS2
{
    /// <summary>
    /// A WebService implementing the Outlook 2007 Mobile Service interface.
    /// Allows you to send SMS messages from Outlook 2007!
    /// </summary>
    [WebService(Namespace = "http://schemas.microsoft.com/office/Outlook/2006/OMS")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class oms : WebService
    {
        /// <summary>
        /// Returns information about the service. The returned XML contains
        /// information about the service, if it supports SMS, MMS or both etc.
        /// See the ServiceInfo.xml for more information about the XML format.
        /// </summary>
        /// <returns></returns>
        [WebMethod]
        public string GetServiceInfo()
        {
            return ReadXml("serviceInfo.xml");
        }

        /// <summary>
        /// Method authenticating a user and geting user information.
        /// Returns an XML string with some basic user information (phone number and e-mail).
        /// </summary>
        /// <param name="xmsUser">An XML string containing the user credentials.</param>
        /// <returns>An XML string with user information.</returns>
        [WebMethod]
        public string GetUserInfo(string xmsUser)
        {
            try
            {
                //XmlDocument xml = new XmlDocument();
                //xml.LoadXml(xmsUser);

                //XmlNamespaceManager nmManager = new XmlNamespaceManager(xml.NameTable);
                //nmManager.AddNamespace("o", "http://schemas.microsoft.com/office/Outlook/2006/OMS");

                //string username = xml.SelectSingleNode("/o:xmsUser/o:userId", nmManager).InnerText;
                //string password = xml.SelectSingleNode("/o:xmsUser/o:password", nmManager).InnerText;

                //Ung1881Proxy proxy = new Ung1881Proxy();
                //proxy.Login(username, password);

                return ReadXml("userInfo.xml");
            }
            catch (Exception)
            {
                StringWriter stringWriter = new StringWriter();
                XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter);

                xmlWriter.WriteStartElement("userInfo", "http://schemas.microsoft.com/office/Outlook/2006/OMS");

                xmlWriter.WriteStartElement("error");
                xmlWriter.WriteAttributeString("code", "invalidUser");
                xmlWriter.WriteAttributeString("severity", "failure");
                xmlWriter.WriteEndElement();

                xmlWriter.WriteEndElement();

                string error = stringWriter.GetStringBuilder().ToString();

                xmlWriter.Close();
                stringWriter.Dispose();

                return error;
            }
        }

        /// <summary>
        /// Method sending an SMS/MMS message to one or more recepients.
        /// </summary>
        /// <param name="xmsData">An XML string with the list of recepients and the content of the message.</param>
        /// <returns>An XML string with a status message.</returns>
        [WebMethod]
        public string SendXms(string xmsData)
        {
            //XmlDocument xml = new XmlDocument();
            //xml.LoadXml(xmsData);

            //XmlNamespaceManager nmManager = new XmlNamespaceManager(xml.NameTable);
            //nmManager.AddNamespace("o", "http://schemas.microsoft.com/office/Outlook/2006/OMS");

            //string username = xml.SelectSingleNode("/o:xmsData/o:user/o:userId", nmManager).InnerText;
            //string password = xml.SelectSingleNode("/o:xmsData/o:user/o:password", nmManager).InnerText;

            try
            {
                //List<string> recipients = new List<string>();
                //List<string> messages = new List<string>();

                //foreach (XmlNode node in xml.SelectNodes("//o:recipient", nmManager))
                //{
                //    recipients.Add(node.InnerText);
                //}

                //foreach (XmlNode node in xml.SelectNodes("//o:content[@contentType='text/plain']", nmManager))
                //{
                //    messages.Add(node.InnerText);
                //}

                //Ung1881Client client = new Ung1881Client(username, password);

                //foreach (string number in recipients)
                //{
                //    foreach (string message in messages)
                //    {
                //        client.SendMessage(number, message);
                //    }
                //}

                return BuildError("ok", false); ;
            }
            catch (AuthenticationException)
            {
                return BuildError("invalidUser", true);
            }
            catch (Exception)
            {
                return BuildError("others", true);
            }
        }

        /// <summary>
        /// Simple helper method reading an file from disk and
        /// returning the content as a string.
        /// </summary>
        /// <param name="fileName">The relative path to the file you want to read.</param>
        /// <returns>The file content.</returns>
        private string ReadXml(string fileName)
        {
            StreamReader sr = new StreamReader(Server.MapPath(fileName), Encoding.Unicode);
            string xml = sr.ReadToEnd();
            sr.Dispose();
            return xml;
        }

        /// <summary>
        /// Simple helper method building the return XML for the SendXms method.
        /// </summary>
        /// <param name="errorCode">The error code.</param>
        /// <param name="failed">If this was a failure or not.</param>
        /// <returns>The XML fragment to return to the client.</returns>
        private string BuildError(string errorCode, bool failed)
        {
            StringWriter stringWriter = new StringWriter();
            XmlTextWriter wr = new XmlTextWriter(stringWriter);

            wr.WriteStartDocument();
            wr.WriteStartElement("xmsResponse", "http://schemas.microsoft.com/office/Outlook/2006/OMS");
            wr.WriteStartElement("error");
            wr.WriteAttributeString("code", errorCode);
            wr.WriteAttributeString("severity", failed ? "failure" : "neutral");
            wr.WriteEndElement();
            wr.WriteEndElement();
            wr.WriteEndDocument();

            wr.Close();
            string returnValue = stringWriter.GetStringBuilder().ToString();
            stringWriter.Dispose();
            return returnValue;
        }
    }
}





问题是当我要添加网络服务网址时outlook文本消息帐户设置,显示错误消息,这是错误=> Web服务地址不正确或已损坏。检查Web服务地址或联系您的管理员。 webservice uri => http://localhost/TestOms/OMS.asmx请帮帮我谢谢



The problem is when i want to add web service url in outlook text messaging account setting, an error message displays this is the error => The webservice address is incorrect or corrupted. Check the web service address or contact your administrator. webservice uri => http://localhost/TestOms/OMS.asmx Please help me Thanks

推荐答案

这篇关于实现办公移动服务的Web服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆