android 串連 wcf rest注意點

來源:互聯網
上載者:User

標籤:

1.datacontract 的元素要有預設值,null 值序列化為json時會有問題,異常並不會在調試中跳出,只是tcp tracer中不會response資訊,然後

android 用戶端報System.EOF錯誤

 [DataContract]    public class UserData    {        private long userId = (long)0;        private string username = string.Empty;        private string nickName = string.Empty;        private string sex = string.Empty;        private string icon = string.Empty;        private string mobilePhone = string.Empty;        private DateTime registerDate = DateTime.Now;               private string customId = string.Empty;        private string flag = string.Empty;        private string errorInfo = string.Empty;        [DataMember]        public long UserId        {            get            {                return userId;            }            set            {                userId = value;            }        }        [DataMember]        public string UserName        {            get            {                return username;            }            set            {                username = value;            }        }        [DataMember]        public string NickName        {            get            {                return nickName;            }            set            {                nickName = value;            }        }        [DataMember]        public string Sex        {            get            {                return sex;            }            set            {                sex = value;            }        }        [DataMember]        public string Icon        {            get            {                return icon;            }            set            {                icon = value;            }        }        [DataMember]        public string MobilePhone        {            get            {                return mobilePhone;            }            set            {                mobilePhone = value;            }        }        [DataMember]        public DateTime RegisterDate        {            get            {                return registerDate;            }            set            {                registerDate = value;            }        }        [DataMember]        public string CustomId        {            get            {                return customId;            }            set            {                customId = value;            }        }        [DataMember]        public string Flag        {            get            {                return flag;            }            set            {                flag = value;            }        }        [DataMember]        public string ErrorInfo        {            get            {                return errorInfo;            }            set            {                errorInfo = value;            }        }    }
View Code

 

2.把wcf 的異常輸出到指定檔案中

<?xml version="1.0" encoding="utf-8"?><configuration>  <system.serviceModel>    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>    <behaviors>      <serviceBehaviors>        <behavior name="webHttpServiceBehavior">          <serviceMetadata httpGetEnabled="true" httpGetUrl="metadata"/>          <serviceDebug includeExceptionDetailInFaults="true"/>          <dataContractSerializer maxItemsInObjectGraph="2147483647"/>        </behavior>      </serviceBehaviors>      <endpointBehaviors>        <behavior name="webHttpendpointBehavior">          <webHttp helpEnabled="true"/>        </behavior>      </endpointBehaviors>          </behaviors>        <bindings>      <webHttpBinding>        <binding          crossDomainScriptAccessEnabled="true"          name="webHttpBinding" maxBufferSize="2147483647"          maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"                        maxArrayLength="2147483647" maxBytesPerRead="2147483647"                         maxNameTableCharCount="2147483647"/>        </binding>      </webHttpBinding>    </bindings>    <services>      <service name="ChatWithLocationServiceLib.services.LoginService"              behaviorConfiguration="webHttpServiceBehavior">        <endpoint                  address="Http://192.168.0.175:3721/LoginService"                  binding="webHttpBinding"                  behaviorConfiguration="webHttpendpointBehavior"                  contract="ChatWithLocationServiceLib.interfaces.ILoginService"/>      </service>         </services>  </system.serviceModel>  <system.webServer>    <modules runAllManagedModulesForAllRequests="true"/>  </system.webServer>  <!--儲存具體的錯誤資訊到svclog檔案中-->  <system.diagnostics>    <sources>      <source name="System.ServiceModel" switchValue="Warning" propagateActivity="true">        <listeners>          <add name="xml" />        </listeners>      </source>    </sources>    <sharedListeners>      <add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="F:\wcf.svclog" />    </sharedListeners>  </system.diagnostics></configuration>
View Code

3.聲明服務介面

  [ServiceContract]    public interface ILoginService    {        [OperationContract(Name = "Login")]        [WebInvoke(Method = "GET",            RequestFormat = WebMessageFormat.Json,            ResponseFormat = WebMessageFormat.Json,            BodyStyle = WebMessageBodyStyle.Bare,            UriTemplate = "Login/{GID}/{PWD}")]        UserData Login(string GID, string PWD);        [OperationContract(Name = "RegistLogin")]        [WebInvoke(Method = "POST",            RequestFormat = WebMessageFormat.Json,            ResponseFormat = WebMessageFormat.Json,            BodyStyle = WebMessageBodyStyle.Bare,            UriTemplate = "RegistLogin")]        UserData RegistLogin(UserData baseInfo);    }
View Code

4.實現服務介面

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]    public class LoginService : ILoginService    {        public UserData Login(string GID, string PWD)        {            Console.WriteLine("GID" + GID + ";PWD:" + PWD);            UserData data = new UserData();            data.UserId = 44;            data.UserName = "erer";            data.ErrorInfo = "username fail";            return data;        }        public UserData RegistLogin(UserData baseInfo)        {            UserData data = new UserData();            data.UserId = 0;            data.UserName = baseInfo.UserName;            return data;        }    }
View Code

 

android 串連 wcf rest注意點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.