我正在尝试从我的Android客户端发送一个json字符串(Android 4.03) 到我的.net Rest服务(WCF)。我得到了“错误请求”作为回应。我有这个服务的.NET测试程序,它工作正常。
服务器端代码:
[WebInvoke(UriTemplate = "submit", Method = "POST", RequestFormat = WebMessageFormat.Json)]
public bool SubmitPackage(string instance)
{
log.WriteWarning("Submit");
return true;
}
我的WCF配置
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" maxReceivedMessageSize="327680" helpEnabled="true" automaticFormatSelectionEnabled="false" defaultOutgoingResponseFormat="Json" transferMode="Buffered" />
</webHttpEndpoint>
</standardEndpoints>
我在Android客户端上的代码
HttpPost request2 = new HttpPost(URL_Submit);
request2.setHeader("content-type", "application/json");
JSONStringer json1 = new JSONStringer().object().key("instance")
.value("hello world").endObject();
StringEntity entity1 = new StringEntity(json1.toString());
entity1.setContentType("application/json;charset=UTF-8");
entity1.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,
"application/json;charset=UTF-8"));
request2.setEntity(entity1);
// Send request to WCF service
DefaultHttpClient httpClient = new DefaultHttpClient();
String response1 = httpClient.execute(request2)
答案 0 :(得分:0)
您的WCF服务是否在IIS中托管?打开失败的请求记录,并查看结果。
还可以使用fiddler查看正在发送的流量。您可以配置fiddler在服务器上运行。它通常在客户端上运行,但您无法在Android上运行它。
配置fiddler以在服务器上运行
http://www.fiddler2.com/fiddler/help/reverseproxy.asp
此外,我经常把它放在我的web.config中,
<system.diagnostics>
<sources>
<source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
<listeners>
<add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\logs\Traces.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
记录与请求相关的错误。这可以打开并解析请求。