Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android应用程序开发人员应该如何将USERPWD发送到我的PHP API?_Php_Android - Fatal编程技术网

Android应用程序开发人员应该如何将USERPWD发送到我的PHP API?

Android应用程序开发人员应该如何将USERPWD发送到我的PHP API?,php,android,Php,Android,这是我第一次做API,我已经设置了一个令牌,客户端必须发送给我才能访问API内容 因此,我检索此令牌的方法是: $_SERVER['PHP_AUTH_USER'] 但是应用程序开发人员一直说他找不到发送此信息的方法,因此我的API无法识别它 你知道他该怎么送我吗?或者可能$\u服务器['PHP\u AUTH\u USER']不是检索令牌的正确方法?您需要执行以下操作 将请求从移动应用发送到端点资源[php] php为您的应用程序生成访问令牌,并将响应返回到手机 移动应用在每个请求中使用此令牌,

这是我第一次做API,我已经设置了一个令牌,客户端必须发送给我才能访问API内容

因此,我检索此令牌的方法是:

$_SERVER['PHP_AUTH_USER']
但是应用程序开发人员一直说他找不到发送此信息的方法,因此我的API无法识别它


你知道他该怎么送我吗?或者可能
$\u服务器['PHP\u AUTH\u USER']
不是检索令牌的正确方法?

您需要执行以下操作

  • 将请求从移动应用发送到端点资源[php]
  • php为您的应用程序生成访问令牌,并将响应返回到手机
  • 移动应用在每个请求中使用此令牌,以确定是否授权调用此资源
  • 您可以查看此github url中以前的注释示例:

  • 我们可以传递令牌以作为
    $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,对于正常情况,基本身份验证应该可以工作。

    此示例向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());
    
    stringurl=”https://www.example.com/api.php";
    HttpClient client=HttpClientBuilder.create().build();
    HttpPost=新的HttpPost(url);
    //添加标题
    post.setHeader(“USERPWD”,USERPWD_值);
    List urlParameters=new ArrayList();
    添加(新的BasicNameValuePair(“locale”,即“”);
    添加(新的BasicNameValuePair(“调用者”,“调用者”);
    setEntity(新的UrlEncodedFormEntity(urlParameters));
    HttpResponse response=client.execute(post);
    System.out.println(“响应代码:
    +response.getStatusLine().getStatusCode());
    

    我想这会解决你的问题。

    这不会是一个
    $\u服务器
    变量,但它将取决于你尚未向我们展示的东西。我希望他们在标题中发送令牌,然后在我这边通过它的声音检索它
    getallheaders
    apache\u response\u headers
    。或者你可以用邮局