0

我正在尝试将 json 字符串从我的 android 客户端(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)
4

1 回答 1

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>

记录与请求相关的错误。这可以打开并剖析请求。

于 2012-05-22T04:04:36.577 回答