提前致谢...
我正在使用此代码在 http 请求中设置 http header 以验证 url..
但我认为有些问题导致我无法收到回复...
响应仍然像“需要授权”...
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){
}
请尽快帮助我
最佳答案
您的代码没问题。您有正确的 http 客户端设置和正确添加的 header 。但。您的基本身份验证是错误的。标题键(身份验证)是正确的,但值应该是 Basic + Base64.encode(username+":"+pass)
还有一个替代方案是下面的代码:
httpclient.getCredentialsProvider().setCredentials(
new AuthScope(targetHost.getHostName(), targetHost.getPort()),
new UsernamePasswordCredentials("username", "password"));
目标主机名可能为空且端口为 -1。
但是如果您使用的是 url 连接,那么您将无法使用这个,因此 header 也是可以接受的。
编辑:
这是您的问题:
String auth = android.util.Base64.encodeToString(
("florin999@zitec.ro" + ":" + "test2323" + ":" + "zitec"
+ ":" + "7716099f468cc71670b68cf4b3ba545c5760baa7")
.getBytes("UTF-8"), android.util.Base64.NO_WRAP);
这些串联是什么??
基本身份验证意味着添加一个 base64 编码的授权 header ,该 header 由单词 "Basic "+ Base64.encodeToString("yourUsername"+":"+"yourPassword)
另一种方法是以相同的方式添加我粘贴在顶部的关于凭据提供程序的方法
关于android - 如何使用http header 发送http请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6394181/