我有一个wcf webservice,当我在Android的POST menthod中点击web服务时,正在服务的值为null。
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值变为null。
public string Login(Student Student) { String id = Student.image;}
Android代码如下:
JSONStringer item = new JSONStringer()
.object()
.key("Student")
.object()
.key("image").value("abcd")
.endObject()
.endObject();
点击的网址是... /登录
答案 0 :(得分:0)
我不熟悉android develeopment,但由于你有BodyStyle = WebMessageBodyStyle.Bare,服务期望请求体中有以下json字符串:
{ “图像”: “ABCD”}
也许这会奏效:
JSONStringer item = new JSONStringer()
.object()
.key("image").value("abcd")
.endObject();