这是我第一次做API而且我设置了一个令牌,客户端必须发送该令牌才能访问API内容。
所以我检索此令牌的方法是:
$_SERVER['PHP_AUTH_USER']
但App开发人员一直说他找不到发送此信息的方式,因此我的API无法识别它。
知道他应该怎么送我?或者$_SERVER['PHP_AUTH_USER']
可能不是检索令牌的正确方法吗?
答案 0 :(得分:0)
我们可以将令牌传递给$headers['Authorization']
进行检索。要从Android设置此变量,我们需要遵循。
String credentials = username + ":" + password;
String basicAuth = "Basic " + new String(new Base64().encode(credentials.getBytes()));
HttpURLConnection myURLConnection = (HttpURLConnection)myURL.openConnection();
myURLConnection.setRequestProperty ("Authorization", basicAuth);
要检查客户端是否已发送令牌,您可以执行以下操作:
if(isset($headers['Authorization'])){
$api_key=$headers['Authorization'];
}
这称为基本授权,它不如OAuth2.0安全。如果您需要可靠的安全性,请尝试将当前代码更改为 OAuth2.0 ,对于正常情况基本身份验证应该有效。
答案 1 :(得分:0)
此示例向post请求添加了几个参数:
String url = "https://www.example.com/api.php";
HttpClient client = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(url);
// add header
post.setHeader("USERPWD", USERPWD_VALUE);
List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair("locale", ""));
urlParameters.add(new BasicNameValuePair("caller", ""));
post.setEntity(new UrlEncodedFormEntity(urlParameters));
HttpResponse response = client.execute(post);
System.out.println("Response Code : "
+ response.getStatusLine().getStatusCode());
我认为这会解决你的问题。
答案 2 :(得分:-1)
您需要执行以下操作