【问题标题】:POST from android to WCF Service (OData)POST 从 android 到 WCF 服务 (OData)
【发布时间】:2023-04-10 17:37:01
【问题描述】:

编辑:

在做了更多实验后,我发现只有在 JSON 字符串中引用了所有值时,该请求才会起作用。也就是说这行不通

{"Text":"test","RatingValue":0.0,"LocationID":5}

这会

{"Text":"test","RatingValue":"0.0","LocationID":"5"}

我不明白为什么。第一个字符串似乎是有效的 JSON 字符串。这是 WCF 的一个怪癖吗?

原帖

我正在尝试将新项目发布到 android 的集合中。我不断收到 400 的响应代码:错误请求。我不明白我做错了什么,我希望有人能帮助我。这是java代码。

HttpURLConnection conn = (HttpURLConnection) uri.toURL().openConnection();
conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");
conn.setRequestProperty("Accept", "application/json");
conn.setRequestProperty("User-Agent", userAgent);
conn.setChunkedStreamingMode(0);
conn.setDoInput(true);
conn.setDoOutput(true);

conn.setRequestMethod("POST");
conn.connect();

DataOutputStream out = new DataOutputStream(conn.getOutputStream());
out.write(data.getBytes());
out.flush();

int code = conn.getResponseCode();
String message = conn.getResponseMessage();

conn.disconnect();

数据是一个 JSON 字符串,如下所示:

{"Text":"test","RatingValue":3.0,"ReviewID":0,"LocationID":5}

在这种情况下,ReviewID 是主键。

请求的 URL 指向评级集合。如果我将相同的位置粘贴到浏览器中,它会成功查询该集合。它看起来像这样:

http://localhost/DataService.svc/Ratings

【问题讨论】:

  • Bort,你是如何发布这个 json 的,你能在你准备这个 json 对象“数据”的地方发布一些代码吗?
  • 错误响应正文中是否返回了消息?如果是这样,请编辑您的帖子以包含它。附带说明一下,大多数 REST 服务不接受主键作为创建请求的一部分。服务可能会因此而窒息。
  • 尝试这些以启用更详细的错误消息,请在此处发布您得到的信息:blogs.msdn.com/b/phaniraj/archive/2008/06/18/…

标签: java android json post odata


【解决方案1】:

试试这个:

 HttpClient hc = new DefaultHttpClient();
 HttpPost hp = new HttpPost("http://localhost/DataService.svc/Ratings");
 HttpResponse hr;
 JSONObject jo1 = new JSONObject();
 joobject.put("Text", "test");
 joobject.put("RatingValue", "3.0");
 joobject.put("ReviewID", ".0");
 joobject.put("LocationID", ".5");
 StringEntity se = new StringEntity(joobject.toString(),HTTP.UTF_8);
 se.setContentType("application/json");
 hp.setEntity(se);
 hr = hc.execute(hp);

也许有帮助

【讨论】:

  • 我仍然收到 400:使用此方法的错误请求响应。
  • 查看我的编辑我已经用HttpPost 更新了我的答案,或者确保你的 WCF 服务正在运行,或者如果你正在检查模拟器,那么可能还有其他问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多