1

背景を説明すると、POST 要求ではなく、多くの重要なリソースに対する PUT 要求のみをサポートするように構築されたバックエンド Web サービスと通信する BlackBerry フロントエンドを構築しています。

このバックエンドは iOS では問題なく動作しましたが、BlackBerry では PUT リクエストを作成できないようです。BlackBerry API を調べると、次のコードで GET/POST リクエストを作成できました。

HttpConnection conn = (HttpConnection) Connector.open(URL);  
conn.setRequestMethod(HttpConnection.GET);

また

conn.setRequestMethod(HttpConnection.POST);

API hereに見られるように、HttpConnection クラスは PUT コマンドをサポートする必要があるようです。手動で設定しようとしましconn.setRequestMethod("PUT");たが、サーバーから 400 エラーが発生し続けます。

BlackBerry の PUT リクエストを適切に作成する方法を知っている人はいますか? Web 全体を検索しても、これまでのところ、使用可能なソリューションは見つかりませんでした。=(ありがとう!

4

1 に答える 1

1

HTTP 400 は、「構文が正しくないため、サーバーがリクエストを理解できませんでした」を意味します。

を使用すると、コードが正常に動作することを確認できますconn.setRequestMethod(HttpConnection.POST);か?

これが私がこれを求めている理由です: RESTful Web サービス パターンによると、サーバー上のリソースを更新するために PUT が使用され、サーバー上にリソースを作成するために POST が使用されるという違いがあります。したがって、ネットワーク コードが POST として正常に動作する場合は、コードが基本的に正常であることが確認されます。

もう1つのポイントは、「サーバー側でどのようなフレームワーク/技術が使用されているか?」です。ブラウザーはネイティブで PUT (GET と POST のみ) をサポートしていないため、これは重要な場合があります。そのため、Web アプリは通常、Web フォームに非表示のフォーム フィールド ("_method=PUT" のようなもの) を配置して PUT をシミュレートします。したがって、ユーザーが [送信] をクリックすると、ブラウザーは "_method=PUT" パラメータを含む POST を実行するため、サーバーはそれが PUT であることを認識できます。これはRailsで使用されており、他の人も同様のことをしていると思います。これがあなたのケースである場合は、POST パラメーターに、Web アプリのパラメーター ("_method=PUT" のようなもの) で必要なパラメーターを追加してみてください。

于 2011-07-13T13:52:38.520 に答える