URLFetch服务始终在POST请求上发送空值

时间:2015-03-31 23:57:02

标签: java google-app-engine

我在使用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我的代码中缺少什么?

1 个答案:

答案 0 :(得分:0)

我没有来自Python的这个问题(我的Java应用程序都没有发布JSON)。我看到的唯一重要意义是,在POST JSON时,我的应用会将Content-Type标头设置为application/json