1

RestfulWebサービスにアクセスしたい。リクエストは次の形式でお願いします。

GET /API/Contacts/username HTTP/1.1 
HOST: $baseuri:port 
Accept: text/xml 
Authorization: Basic ZmF0aWdhYmxlIGdlbmVyYXR=

また、HTTPSプロトコルを介してWebサービスを呼び出しています。以下は私が使用しているコードです:

HttpGet get = new HttpGet("https://secure.myapp.com/MyApp/API/Contacts/myname");

  get.addHeader("Accept","text/xml");
  get.addHeader("Authorization","Basic ZmF0aWdhYmxlIGdlbmVyYXR=");          
  get.addHeader("Host","https://secure.myapp.com");
  get.addHeader("Connection Use","HTTP 1.1");

  DefaultHttpClient client =  new DefaultHttpClient();
  ResponseHandler objHandler = new BasicResponseHandler();
  String getResponse = client.execute(get,objHandler); 

しかし、エラーが発生しました:400不正なリクエスト。

コードが正しいかどうかわかりません。ヘッダーでメソッド(GET、POST、またはPUT)を明示的に指定する必要がありますか?

助けてください...ThnkingYou...。

4

2 に答える 2

0

'Basic ZmF0aWdhYmxlIGdlbmVyYXR ='を二重引用符で囲んではいけませんか?また、Webサービスの例の要求と応答を確認し、すべてが指定されていることを確認してください。

于 2011-10-12T11:40:58.067 に答える
0

ああ...それは私の間違いでした。ヘッダーを追加する順序を守っていませんでした。リクエストに応じて注文を変更したところ、正常に動作しています。

リクエストでは、HOSTを最初のパラメータにする必要があります。以下は修正されたコードです。

get.addHeader("Host","secure.myapp.com");
get.addHeader("Accept","text/xml");   
get.addHeader("Authorization","Basic ZmF0aWdhYmxlIGdlbmVyYXR=");                
get.addHeader("Connection Use","HTTP 1.1"); 

ご迷惑をおかけして申し訳ありません...

于 2011-10-13T03:44:26.840 に答える