我正在Authentication error: Unable to respond to any of these challenges: {}
这是来自服务器的响应
02-04 20:18:52.260: I/JSON(1306): <div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
02-04 20:18:52.260: I/JSON(1306): <h4>A PHP Error was encountered</h4>
02-04 20:18:52.260: I/JSON(1306): <p>Severity: Notice</p>
02-04 20:18:52.260: I/JSON(1306): <p>Message: Undefined index: nc</p>
02-04 20:18:52.260: I/JSON(1306): <p>Filename: libraries/REST_Controller.php</p>
02-04 20:18:52.260: I/JSON(1306): <p>Line Number: 754</p>
02-04 20:18:52.260: I/JSON(1306): </div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
02-04 20:18:52.260: I/JSON(1306): <h4>A PHP Error was encountered</h4>
02-04 20:18:52.260: I/JSON(1306): <p>Severity: Notice</p>
02-04 20:18:52.260: I/JSON(1306): <p>Message: Undefined index: cnonce</p>
02-04 20:18:52.260: I/JSON(1306): <p>Filename: libraries/REST_Controller.php</p>
02-04 20:18:52.260: I/JSON(1306): <p>Line Number: 754</p>
02-04 20:18:52.260: I/JSON(1306): </div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
02-04 20:18:52.260: I/JSON(1306): <h4>A PHP Error was encountered</h4>
02-04 20:18:52.260: I/JSON(1306): <p>Severity: Notice</p>
02-04 20:18:52.260: I/JSON(1306): <p>Message: Undefined index: qop</p>
02-04 20:18:52.260: I/JSON(1306): <p>Filename: libraries/REST_Controller.php</p>
02-04 20:18:52.260: I/JSON(1306): <p>Line Number: 754</p>
02-04 20:18:52.260: I/JSON(1306): </div>-
这是我的代码
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(surl);
httppost.setHeader(HTTP.CONTENT_TYPE, "application/json");
httppost.setHeader("Accept", "application/json");
httppost.setHeader("Connection", "close");
httppost.setHeader("Vary", "Accept-Encoding");
httppost.setHeader("Vary", "User-Agent");
DigestScheme digestAuth = new DigestScheme();
digestAuth.overrideParamter("algorithm", "MD5");
digestAuth.overrideParamter("realm", "REST API");
digestAuth.overrideParamter("nonce", Long.toString(new Random().nextLong(), 36));
digestAuth.overrideParamter("qop", "auth");
digestAuth.overrideParamter("nc", "0");
digestAuth.overrideParamter("cnonce", DigestScheme.createCnonce());
digestAuth.overrideParamter("opaque", "aba3d4b49c454e1974970e7b5514b001");
Header auth = digestAuth.authenticate(new
UsernamePasswordCredentials("mypass", "mypassword"), httppost);
httppost.setHeader(auth);
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
String result = EntityUtils.toString(response.getEntity());
Log.i("JSON", result+"-");
Header auth = digestAuth.authenticate(new UsernamePasswordCredentials("admin", "1234"), httppost);
httppost.setHeader(auth);
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
String result = EntityUtils.toString(response.getEntity());
Log.i("JSON", result+"-");
这是我想在cURL中实现的
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
我使用了web-sniffer
这是必需的HEADERS
WWW-Authenticate:摘要领域=“REST API”qop =“auth”nonce =“52f19001dc626”opaque =“aba3d4b49c454e1974970e7b5514b001”
内容长度: 41
不同:接受编码,用户代理
连接:关闭
内容类型: json
有什么建议吗?
答案 0 :(得分:0)
试试这个
httppost.setHeader("Authorization", "Basic " + Base64.encodeToString("admin:123".getBytes(), Base64.NO_WRAP));
而不是这个
Header auth = digestAuth.authenticate(new UsernamePasswordCredentials("admin", "1234"), httppost);
httppost.setHeader(auth);