如何使用http标头发送http请求

时间:2011-06-18 05:54:41

标签: android

提前致谢...

我在http请求中使用此代码设置http标头以进行身份​​验证网址。

但我觉得有些什么是因为我无法得到回应......

响应仍然像“需要授权”......

httpParameters = new BasicHttpParams();
String auth = android.util.Base64.encodeToString(
    ("florin999@zitec.ro" + ":" + "test2323" + ":" + "zitec"
    + ":" + "7716099f468cc71670b68cf4b3ba545c5760baa7")
    .getBytes("UTF-8"), android.util.Base64.NO_WRAP);

HttpConnectionParams.setSoTimeout(httpParameters, 0);
client = new DefaultHttpClient(httpParameters);
String getURL = "URL here";
get = new HttpGet(getURL);
get.addHeader("Authorization", "Basic "+ auth);
// get.addHeader("X-ZFWS-Accept", "text/json");

HttpResponse responseGet = client.execute(get);
HttpEntity resEntityGet = responseGet.getEntity();
if (resEntityGet != null) {
    //do something with the response
    //Toast.makeText(Login.this.getApplicationContext(),EntityUtils.toString(resEntityGet), Toast.LENGTH_SHORT).show();
    String s = EntityUtils.toString(resEntityGet);
    tv1.setText(s);
}
}catch(Exception e){
}

plssss尽快帮助我

1 个答案:

答案 0 :(得分:8)

你的代码很好。你有http客户端设置权限和标题添加权限。但。您的基本身份验证错误。标题密钥(身份验证)是正确的,但值应为Basic + Base64.encode(用户名+“:”+传递)

另外一个是下面的代码:

 httpclient.getCredentialsProvider().setCredentials(
                new AuthScope(targetHost.getHostName(), targetHost.getPort()),
                new UsernamePasswordCredentials("username", "password"));

目标主机名可能为null,端口为-1。

但如果您使用网址连接,则无法使用此网址,因此标题也可以接受。

修改

这是你的问题:

String auth = android.util.Base64.encodeToString(
    ("florin999@zitec.ro" + ":" + "test2323" + ":" + "zitec"
    + ":" + "7716099f468cc71670b68cf4b3ba545c5760baa7")
    .getBytes("UTF-8"), android.util.Base64.NO_WRAP);

什么是所有的联系?

基本身份验证意味着添加base64编码的授权标头,该标头包含单词"Basic " + Base64.encodeToString("yourUsername"+":"+"yourPassword)

另一种方法是以相同的方式添加我在顶部粘贴的关于凭证提供程序的方法