我通过json对象中的HTTP Post将数据从Android设备发送到我的cakephp网站..就像这样
HttpPost post = new HttpPost("https://www.mywebtest.com/test");
然后我解码json并像这样提取数据
if ($this->request->isPost()){
$json = $this->request->data('json');
$data = json_decode($json, TRUE);
但目前我没有检查http帖子或数据是来自我的Android应用程序还是其他人。如果有人知道网址,他可以做恶意的事情。因为有时现在我有的网址写在 httpPost 当我在浏览器中输入这个网址时,浏览器上没有显示任何内容..我想显示某种错误或404页面,如果有人在浏览器中输入了网址..基本上,你可以说我正在创建CakePHP是一个API,我想做的是保护API,所以只有我的应用程序可以执行请求。所以我想实现某种类型的身份验证..做一些研究我想出一个解决方案从android应用程序传递另一个参数作为秘密令牌,然后从我的webapp检查令牌,然后提取数据..我不知道如何在httppost中传递另一个参数,然后在我的网页上检查它...如果可能的话我也想要随机生成令牌并在每个请求上对其进行加密,然后通过解密来解密当数据从android发布到webapp时,在webapp中输入密钥..如果有人在此之前做过或有想法,请分享代码或任何链接。
答案 0 :(得分: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
}
?>
这是如何在android端得到回应
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;
}
我希望这会有所帮助。
答案 1 :(得分:-1)
尝试使用RequestHandler isMobile()。
如果请求来自手机,您将会成真。