【问题标题】:Android : 400 Error code when accessing a RESTful webserviceAndroid:访问 RESTful 网络服务时出现 400 错误代码
【发布时间】:2011-12-06 01:19:03
【问题描述】:

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

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 Bad request。

我不确定我的代码是否正确。是否需要在 header 中明确指定方法(GET、POST 或 PUT)?

请帮帮我... 谢谢你....

【问题讨论】:

    标签: android rest error-code


    【解决方案1】:

    您不应该将“Basic ZmF0aWdhYmxlIGdlbmVyYXR=”放在双引号中吗? 还要检查 Web 服务示例请求和响应,并确保所有内容都已指定。

    【讨论】:

    • 很抱歉忘记在问题中加上引号。实际上我在请求中使用了引号。但不工作
    【解决方案2】:

    哦... 那是我的错误。 我没有保持添加标题的顺序。 当我根据请求更改其顺序时,它工作正常。

    在请求中,HOST 应该是第一个参数。 以下是更正后的代码。

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

    很抱歉打扰大家...

    【讨论】:

      猜你喜欢
      • 2018-01-24
      • 2011-07-30
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多