java– 确定是否来自Android App的HTTP请求?然后适当地回应

java– 确定是否来自Android App的HTTP请求?然后适当地回应,第1张

概述我的Android应用程序有一个与之关联的App Widget,它在Android设备上每10分钟更新一次.这些更新将HTTP数据请求发送到服务器并解析服务器响应并根据需要更新应用程序.截至目前,如果您从笔记本电脑或PC上的浏览器ping该URL,服务器将响应并更新服务器上数据库中所需的任何内容.我想要做的是当在服务器上收到HTTP请求时,我想确定请求是来自

我的Android应用程序有一个与之关联的App Widget,它在AndroID设备上每10分钟更新一次.这些更新将http数据请求发送到服务器并解析服务器响应并根据需要更新应用程序.

截至目前,如果您从笔记本电脑或PC上的浏览器Ping该URL,服务器将响应并更新服务器上数据库中所需的任何内容.

我想要做的是当在服务器上收到http请求时,我想确定请求是来自AndroID设备的AndroID应用程序,然后使用数据进行响应.我想改变服务器上PHP中的代码,如果http请求来自浏览器或除了我的AndroID应用程序以外的任何其他内容,它们将显示或重定向到某个页面.

来自Apps的典型http请求类似于http://example.com/abc.php?usera=abc&datab=xyz

如果它来自除AndroID应用程序之外的任何其他地方,我不想以相同的方式回复此URL.这可能吗?什么是实现这一目标的好方法..

谢谢你的帮助.

最佳答案您可以为请求添加签名,然后在服务器端进行检查.

只需获取查询并在末尾添加一个密码,然后创建一个MD5,您可以将其作为标题发送(或用作用户代理).并在服务器上执行相同 *** 作并检查校验和是否相同.

为了使它更安全,您可以设置时间戳,以便请求仅在短时间内有效.

使您的查询看起来像http://example.com/abc.php?usera=abc&datab=xyz&timestamp=123456789,其中timestamp是当前时间(在unix时间戳中)并在您的应用中添加:

public static String makeCheck(String url){    URL u=new URL(url);    MessageDigest md = MessageDigest.getInstance("MD5");    u.getquery();    md.update(u.getquery().getBytes());    BigInteger bn = new BigInteger(1,md.digest("A_SECRET_WORD".getBytes()));    return bn.toString(16);}

当你需要添加标题时,请使用以下内容:

request.addheader("X-CHECKSUM",makeCheck(url) );

然后在您的服务器上,您可以使用:

if (md5($_SERVER['query_STRING']."A_SECRET_WORD")!=$_SERVER['X-CHECKSUM']) {    // Wrong checksum}$timediff=60;if ( $_GET['timestamp']>(time()+$timediff) || $_GET['timestamp']<(time()-$timediff) ) {    // Bad timestamp}

记住时间戳有点松弛,因为你的服务器时钟和电话时钟可能有点不同步. 总结

以上是内存溢出为你收集整理的java – 确定是否来自Android App的HTTP请求?然后适当地回应全部内容,希望文章能够帮你解决java – 确定是否来自Android App的HTTP请求?然后适当地回应所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1140459.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存