我在使用URLFetch服务时遇到一些问题,它始终将json String作为null发送:
url = new URL(URL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setConnectTimeout(GAE_PUMP_TIME);
writer = new OutputStreamWriter(conn.getOutputStream());
writer.write(jsonString);
writer.close();
if(conn.getResponseCode() == HttpURLConnection.HTTP_OK || conn.getResponseCode() == HttpURLConnection.HTTP_NO_CONTENT){
LOG.info("Response: " + "OK");
setStatus(Status.SUCCESS_OK);
} else {
LOG.info("Response: " + "ERROR");
setStatus(Status.SERVER_ERROR_INTERNAL);
}
上述代码总是引发服务器错误,因为我们检查服务器发送或接收的数据时为空。
我尝试通过其他REST客户端(如Curl)手动发送String jsonString
,服务器可以处理。因此,结论是数据格式正确。 问题是为什么GAE URLFetch服务在做POST方法时它不能发送jsonString我的代码中缺少什么?
答案 0 :(得分:0)
我没有来自Python的这个问题(我的Java应用程序都没有发布JSON)。我看到的唯一重要意义是,在POST JSON时,我的应用会将Content-Type
标头设置为application/json
。