1

我想访问一个 Restful Web 服务。我希望请求应采用以下格式。

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)?

请帮帮我……谢谢你……

4

2 回答 2

0

Shouldn't you put 'Basic ZmF0aWdhYmxlIGdlbmVyYXR=' in double quotes? Also check web service example request and response and make sure that everything is specified.

于 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 回答