1

Google App EngineのJavaランタイム用のUrlFetchサービスを使用してHTTPPUTリクエストを行うにはどうすればよいですか?

私のアプリケーションの次のコードはPOSTリクエストを送信します:

URL url = ...;
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(MAX_TIMEOUT); // Maximum allowable timeout on GAE of 60 seconds
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");
OutputStreamWriter writer = null;
try {
    writer = new OutputStreamWriter(conn.getOutputStream(), Charset.forName("utf-8"));
    writer.write(jsonContent);
} finally {
    if (writer != null)
        writer.close();
    }
}
InputStream inStream = null;
E response = null;   // Unmarshalled using Jackson
try {
    inStream = conn.getInputStream();
    if (status != 204) { // NO CONTENT => No need to use Jackson to deserialize!
        response = mapper.readValue(inStream, typeRef);
    }
} finally {
    if (inStream != null) {
        inStream.close();
    }
}

と同じことを試みPOSTますPUTが、MethodNotAllowedで405HTTPエラーが発生し続けます。助けてくれてありがとう。

参照: https ://developers.google.com/appengine/docs/java/urlfetch/overview

残念ながら、GAEJavaにはPythonバージョンのGAEURLフェッチ(https://developers.google.com/appengine/docs/python/urlfetch/overview)ほど優れたドキュメントがありません。グーグルの誰かが理由を言いたいですか?

4

1 に答える 1

1

あなたのコードは機能すると思います。表示されているのHTTP 405は、接続しているサーバーからのものです (すべてのサービスがサポートしているわけではありませんPUT)。curlコードに問題がないことを確認したい場合は、次の URLを使用してアクセスしてみてください。

curl -X PUT -d "foo=bar" http://your_site.com/path/to/your/resource
于 2012-10-31T20:49:34.817 に答える