0

我正在使用 HttpPut 与 Android 中的服务器进行通信,我得到的响应代码是 500。在与服务器人员交谈后,他说准备如下所示的字符串并发送。

{“键”:“值”,“键”:“值”}

现在我完全困惑我应该在我的请求中在哪里添加这个字符串。

请帮帮我。

4

2 回答 2

8

我最近不得不想办法让我的 android 应用程序与 WCF 服务通信并更新特定记录。起初,这真的让我很难弄清楚,主要是因为我对HTTP协议知之甚少,但我能够PUT使用以下方法创建一个:

    URL url = new URL("http://(...your service...).svc/(...your table name...)(...ID of record trying to update...)");

    //--This code works for updating a record from the feed--
    HttpPut httpPut = new HttpPut(url.toString());
    JSONStringer json = new JSONStringer()
    .object() 
       .key("your tables column name...").value("...updated value...")
    .endObject();

    StringEntity entity = new StringEntity(json.toString());
    entity.setContentType("application/json;charset=UTF-8");//text/plain;charset=UTF-8
    entity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json;charset=UTF-8"));
    httpPut.setEntity(entity); 

    // Send request to WCF service 
    DefaultHttpClient httpClient = new DefaultHttpClient();

    HttpResponse response = httpClient.execute(httpPut);                     
    HttpEntity entity1 = response.getEntity(); 

    if(entity1 != null&&(response.getStatusLine().getStatusCode()==201||response.getStatusLine().getStatusCode()==200))
    {
         //--just so that you can view the response, this is optional--
         int sc = response.getStatusLine().getStatusCode();
         String sl = response.getStatusLine().getReasonPhrase();
    }
    else
    {
         int sc = response.getStatusLine().getStatusCode();
         String sl = response.getStatusLine().getReasonPhrase();
    }

话虽如此,有一个更简单的选择,即使用一个库,该库将为您生成更新方法,以允许您更新记录,而无需像我上面那样手动编写代码。似乎很常见的 2 个库是odata4jrestlet. 虽然我还没有找到一个清晰简单的教程,因为odata4j有一个restlet非常好的: http ://weblogs.asp.net/uruit/archive/2011/09/13/accessing-odata-from-android -using-restlet.aspx?CommentPosted=true#commentmessage

于 2012-06-19T15:02:51.903 回答
1

错误 500 是内部服务器错误。不确定这是否能回答您的问题,但我个人在尝试在 JSON 格式的 PUT 请求中发送动画 gif 的数据 URI 但数据 URI 太长时遇到了这个问题。您可能一次发送了太多信息。

于 2018-08-29T01:36:23.770 回答