2013-06-28 26 views
-1

我从Android设备通过HTTP POST以JSON对象..like这与Android的把CakePHP

HttpPost post = new HttpPost("https://www.mywebtest.com/test"); 

将数据发送到我的CakePHP的网站和HTTP POST发送令牌,然后我解码JSON和提取像这样的数据

  if ($this->request->isPost()){ 

     $json = $this->request->data('json'); 
     $data = json_decode($json, TRUE); 

但我没有检查是否HTTP POST或数据是从我的Android应用程序或其他人。所以今后如果有人知道的URL,他可以做一些恶意..because瞬间现在我已经写了httpPost当我在浏览器中输入这个url时,浏览器中没有显示任何内容..我想显示某种错误或404页面,如果某个人在浏览器中输入了url ..基本上,你可以说我正在用CakePHP是一个API,我想要做的是安全的API,所以只有我的应用程序可以执行requests.so我想实现某种类型的身份验证..做一些研究,我想出了一个解决方案,传递另一个参数作为秘密令牌android应用程序,然后检查从我的webapp令牌,然后提取数据..我不知道如何可以传递另一个参数在httppost,然后检查它在我的网页..也如果可能我想要随机生成令牌并加密它对每个请求进行解密,然后通过webapp中的密钥对数据进行解密,只要数据从android发布到webapp。如果某人在此之前完成了这项工作,或者有了一个想法,那么请分享代码或任何链接。

+0

@Amourreux我不明白你写的代码是干什么的,你能解释一下多一点?我想要做的是验证我的网络服务器,数据实际上来自我的移动应用程序。 – hellosheikh

+0

我不明白$ _GET [“callback”]是什么来做的?也是你发送静态令牌,我想要的是我想改变每个请求的令牌,并且还想发送加密的令牌 – hellosheikh

回答

0

创建参数一个JSONObject,

JSONObject parametersList = new JSONObject(); 

把你的参数成JSONObject的

parametersList.put("testID", 123); 

int androidValue = 231231231; // a identifer or password your choice. 
parametersList.put("androidValue", androidValue); 

,并添加列表您HttpPost

HttpPost request = new HttpPost("https://www.mywebtest.com/test"); 

request.setHeader(HTTP.CONTENT_TYPE, "application/json; charset=utf-8"); 

request.setEntity(new StringEntity(parameters.toString(), HTTP.UTF_8)); 

在PHP端;

<?php 
$postdata = $HTTP_RAW_POST_DATA; 
$data = json_decode($postdata); 
$id = $data->testID; 
$androidValue = $data->androidValue; 

if(androidValue == 231231231) 
{ 
    $json = "{d:[{sample1:'".$id."',sample2:'value12'}]}"; 
    $response = $_GET["callback"] . $json; 
    echo $response; 
} 
else 
{ 
    // send failed data 
} 

?> 

这如何让机器人侧

  HttpResponse response = client.execute(request); 

      final int statusCode = response.getStatusLine().getStatusCode(); 
      final String jsonResponse = EntityUtils.toString(response.getEntity()); 

      if (statusCode != HttpStatus.SC_OK) { 
       Log.w(TAG, "Error in web request: " + statusCode); 
       Log.w(TAG, jsonResponse); 
       return null; 
      } else { 
       Log.i(TAG, jsonResponse); 
       return jsonResponse; 
      } 

回应我希望这将有助于。