2013-02-01 49 views
3

我无法正确发送HttpPost头来获取Apache HttpClient。如何为Java客户端请求设置HttpPost头Android

我没有问题发送名称值对和whatnot,但每当我设置或添加POST标题时,请求时消失。

我已经尝试了setHeader和addHeader,以及尝试一次。

这里是我的代码:

HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("https://posttestserver.com/post.php"); 
    httppost.setHeader("Authorization: Bearer", accessToken); 
    httppost.addHeader("Authorization: Bearer", accessToken); 
    Log.d("DEBUG", "HEADERS: " + httppost.getFirstHeader("Authorization: Bearer")); 

    ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
    String responseBody = httpclient.execute(httppost, responseHandler); 

    Log.d("DEBUG", "RESPONSE: " + responseBody); 

此外,该请求之前调试语句执行打印出正确的标题,所以我知道它被添加,那么后来才下降。

任何帮助将不胜感激!

编辑:这是所有运行在一个AsyncTask如果重要的。我不这么认为,因为有一个NetworkOnMainThread异常抛出,否则我认为它可能值得一提。

回答

2

尝试连接该tells your HTTP headers和捕获(只是打印普通的HTML)的输出服务。至少你会知道你的标题是否真的迷路了,或者别的什么东西。

+0

我发送的头没有显示在响应中,事实上从响应看起来没有任何头发送。 –

+0

Gemein。可能不是一个解决方案,但至少我们已经缩小了可能发生错误的区域。 – h22

19

代码中至少有一个错误。试试这个:

httppost.setHeader("Authorization", "Bearer "+accessToken); 
+0

谢谢,但头仍然被丢弃:( –

+0

你是什么意思被丢弃?你看到一个请求没有在服务器端的头? – jdb

+0

是啊,授权头是不可能的 –

-1

我个人更喜欢使用其他methos正确设置HTTP授权:

httpClient.getCredentialsProvider().setCredentials(
    new AuthScope(hostname, port), 
    new UsernamePasswordCredentials(user, pass)); 
+0

我的代码是一个OAuth令牌请求的一部分,所以我不认为这将工作不幸... –

1

你说的头是不是在您的回复一个响应,我只想澄清,头不回来的响应,他们只是在发送请求到服务器。网络跟踪或提琴手会话可以显示请求和响应,这应该给你一个明确的答案,确定他们是否掉线。

相关问题