1

私はTomcatアプリケーションサーバーとこのJavaソースコードを持っています:

public class MyServlet extends HttpServlet {
    public MyServlet() {}

    protected void doPut(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        // ... PUT code
    }

    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        // ... GET code
    }
}

GETを使用すると、すべてが正常になります。メソッドdoGetが呼び出されます。しかし、私のiPhoneアプリからputを実行すると、doPutメソッドは呼び出されません。サーバーでは何も起こりません。ログファイルには何も表示されません。では、何が問題なのですか?TomcatにPUTの制限はありますか?どうすればこれをデバッグできますか?iOSデバイスでは、PUTを使用するように指示できるライブラリを使用しています。これは非常に一般的なフレームワークであるため、機能するはずです。

誰かアイデアがありますか?

よろしくティム。

4

2 に答える 2

3

Wiresharkを使用してパケットをトレースし、実際にPUTリクエストを取得していることを確認します。

または、同様に、Tomcat用に別のアクセスログを設定して(既にデフォルトの構成ファイルにありますが、コメントアウトされていると思います)、何が入ってくるかを確認します。

お気に入りのテキストエディタでtomcatディレクトリのファイルconf/server.xmlを開くと、終わり近くにあります。

    <!-- Access log processes all example.
         Documentation at: /docs/config/valve.html -->
    <!--
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
           prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
    -->

コメントトークンを削除すると、すべてのアクセスがlogs/localhost_access_logに記録されます。

例:

    <!-- Access log processes all example.
         Documentation at: /docs/config/valve.html -->
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
           prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
于 2011-06-03T16:30:30.560 に答える
0

doPut() は有効なメソッドですが、代わりに doPost() を実行する可能性が高くなります。

HTTP では GET、POST、および PUT が定義されていますが、一般的に GET はページへのアクセスに使用され、POST はデータの投稿に使用されます。

これらの動詞の定義の詳細については、次の URL を参照してください。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

于 2011-06-03T16:35:04.500 に答える