2017-02-06 58 views
0

我有一個wcf webservice,當我在android中打開web服務menthod時,正在服務的值爲null。傳遞一個字符串從android到wcf寧靜服務變得空

的CS文件如下:

[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "Login", BodyStyle = WebMessageBodyStyle.Bare)] string Login(Student Student); public class Student { [DataMember(Name = "image")] public string image { get; set; } }

配置文件如下

<system.web.extensions> 
<scripting> 
    <webServices> 
    <jsonSerialization maxJsonLength="2147483647" /> 
    </webServices> 
</scripting> 
</system.web.extensions> 
<system.net> 
    <defaultProxy enabled="true" useDefaultCredentials="true"> </defaultProxy> 
</system.net> 
<system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
<httpRuntime targetFramework="4.0" /> 

</system.web> 

<system.serviceModel> 
<services> 

    <service name="ESIService.Service1" behaviorConfiguration="ServiceBehaviour"> 
    <endpoint address="" binding="webHttpBinding" contract="ESIService.IService1" behaviorConfiguration="web"/> 

</service> 
</services> 


<bindings> 
    <basicHttpBinding> 
    <binding name="BasicHttpBinding_IService1" closeTimeout="00:02:00" openTimeout="00:02:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" transferMode="Buffered" useDefaultWebProxy="true"> 

     <readerQuotas maxDepth="500" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
     <security mode="None"> 
     <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> 
     <message clientCredentialType="UserName" algorithmSuite="Default" /> 
     </security> 
    </binding> 
    </basicHttpBinding> 
    </bindings> 

<behaviors> 
    <serviceBehaviors> 
    <behavior name="ServiceBehaviour"> 

     <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> 

     <serviceDebug includeExceptionDetailInFaults="true" /> 
     <serviceThrottling maxConcurrentCalls="16" maxConcurrentInstances="41" maxConcurrentSessions="100"/> 
    </behavior> 
    </serviceBehaviors> 
    <endpointBehaviors> 
    <behavior name="web"> 
     <webHttp /> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 

<protocolMapping> 
    <add binding="basicHttpsBinding" scheme="https" /> 
</protocolMapping> 

<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="false"/> 
</system.serviceModel> 

    <system.webServer> 
<directoryBrowse enabled="true" /> 
<defaultDocument> 
    <files> 
    <add value="Service1.svc" /> 
    </files> 
</defaultDocument> 
    <validation validateIntegratedModeConfiguration="false" /> 
</system.webServer> 
</configuration>` 

下SVC文件中給出,當我跑我得到的ID給值爲空。

public string Login(Student Student) { String id = Student.image;}

Android的代碼如下:

JSONStringer item = new JSONStringer() 
       .object() 
       .key("Student") 
       .object() 
       .key("image").value("abcd") 
       .endObject() 
       .endObject(); 

URL上午擊球是... /登錄

回答

0

我不熟悉Android開發,但既然你有BodyStyle = WebMessageBodyStyle.Bare,服務期望在請求體中有下面的json字符串:

{ 「形象」: 「ABCD」}

也許這會工作:

JSONStringer item = new JSONStringer() 
       .object() 
       .key("image").value("abcd") 
       .endObject(); 
相關問題