有的网站为了不让app请求他们的API就做了限制,根据header判断是否是pc或者手机。如果是pc就让通过,如果是手机就返回错误。兵来将挡,水来土掩。我们可以把自己伪装成pc进行请求,这样就可以了。不过可不要拿来做坏事哦

首先网站后台端是如何做的区分,

通过判断用户的客户端的user-agent信息来区分用户设备,可以满足大部分用户的设备判断要求,若用户对自己的user-agent进行篡改,会导致当前的判断失效

String requestHeader = request.getHeader("user-agent");if (isMobileDevice(requestHeader)) {//移动设备}public static boolean isMobileDevice(String requestHeader) {/*** android : 所有android设备 mac os : iphone ipad windows* phone:Nokia等windows系统的手机*/String[] deviceArray = new String[] { "Android", "iPhone", "MQQBrowser", "UCWEB", "Windows Phone", "iPod", "iPad", "BlackBerry", "hp-tablet","SymbianOS" };if (requestHeader == null)return false;requestHeader = requestHeader.toLowerCase();if (!requestHeader.contains("Windows NT".toLowerCase()) && !requestHeader.contains("Macintosh".toLowerCase())) {for (String device : deviceArray) {if (requestHeader.contains(device.toLowerCase())) {return true;}}}return false;}

那么我们就知道如何修改了,下面具体实现

OKhttp的实现:

Request request = new Request.Builder().url(url).addHeader("User-Agent","Mozilla/4.0 (compatible; MSIE 7.0; Windows 7)").get().build();Call call = okClient.newCall(request);

android-async-http的实现:

AsyncHttpClient client = new AsyncHttpClient();//设置USerAgent模拟PC访问client.setUserAgent("Mozilla/4.0 (compatible; MSIE 7.0; Windows 7)");client.get(url, new TextHttpResponseHandler() {@Overridepublic void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {}@Overridepublic void onSuccess(int statusCode, Header[] headers, String responseString) {}});

参考链接:

http://blog.csdn.net/ithouse/article/details/53230533

http://blog.csdn.net/bidewang_wolf/article/details/72689395

Okttp模拟PC浏览器发送http请求相关推荐

  1. 微信浏览器发送ajax请求执行多次解决方法

    微信浏览器发送ajax请求执行多次解决方法 参考文章: (1)微信浏览器发送ajax请求执行多次解决方法 (2)https://www.cnblogs.com/hmhhz/p/8940145.html ...

  2. 解决ie浏览器发送ajax请求的缓存问题

    由于ie浏览器的缓存问题,我们使用ie浏览器发送ajax请求,修改服务器js代码后,再次发送该ajax请求,ie浏览器会从缓存中查找该请求的数据,这样会导致ie显示的数据并不是最新的. 1.服务器代码 ...

  3. 浏览器发送http请求过程分析

    https://segmentfault.com/a/1190000010156898 请求过程整体流程: 域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 ...

  4. Scrapy框架的学习(12. scrapy中的模拟登陆,发送post请求模拟登陆)

    1.在有的网站的的登录的界面上,有用户名以及输入密码的输入框 然后输入账号和密码进去,点击登录,后台就会把得到的数据发送过去,验证之后然后就登录成功了,就会跳转到 响应的登录之后的网站 2. 我们可以 ...

  5. python模拟浏览器请求的库_基于Python模拟浏览器发送http请求

    1.使用 urllib2 实现 #! /usr/bin/env python # -*- coding=utf-8 -*- import urllib2 url="https://www.b ...

  6. java模拟servlet_Java应用程序模拟向Servlet发送POST请求

    在某些情况下,需要用Java applicatioin来模拟form,向服务器(本文以servlet为例)发送http post请求,包括提交表单域中的数据以及上传文件.如果仅仅是传递form中的数据 ...

  7. springboot接收浏览器发送delete请求( method not allowed 405解决方法)

    [README] 浏览器使用form提交信息的时候只支持GET和POST,如果需要在浏览器上使用PUT和DELETE请求方式的话,只能使用欺骗的方式了,SpringMvc提供了HiddenHttpMe ...

  8. 微信一次发两个ajax请求,微信浏览器发送ajax请求执行多次解决方法

    一次sql排序的问题. select date, count(fail) as fail,count(win) as win from (select date,(case (result) when ...

  9. 计算机网络 浏览器发送http请求的过程分析

    https://segmentfault.com/a/1190000010156898 这篇提到了在域名解析时的各级缓存查找: http://2277259257.iteye.com/blog/202 ...

最新文章

  1. Akka的Actor编程
  2. Sherri Sparks
  3. (SpringMVC)数据处理及跳转
  4. Kali下JDK1.8的安装过程
  5. r8169驱动下载linux,CentOS自带R8169驱动与R8168网卡之间的烦恼
  6. 2017/3/8 函数指针/事件/委托....
  7. Linux 4.15 rc7,Linux学习之十五(sed命令)-2017-4-23
  8. Nature重磅:发现延长女性生育寿命的新基因
  9. 校园表白墙-带后台源码
  10. SQL语句中exists/not exists的用法分析
  11. 软考历程(4)——安全问题之病毒
  12. 计算机ip保留地址,分类ip地址中,保留地址有哪些?具体点说说,作业。
  13. CAj格式文件打开方法
  14. Win10 电脑磁盘分区
  15. 记录Magisk面具root,并使用HttpCanary获取APP或小程序请求 (一)
  16. 刀片服务器装linux,刀片服务器硬盘启动Linux独立安装
  17. msp430单片机复习内容
  18. 满满干货!送给想学生物竞赛的同学们一份入门指南
  19. 微机原理与接口技术[第三版]——第五章课后习题答案
  20. 复数java实验_java实验 复数

热门文章

  1. 17-面向对象之语法(2)
  2. python获取当前时间、今天零点、23时59分59秒、昨天的当前时间、明天的当前时间
  3. Linux系统下如何查看Nvidia显卡芯片型号的两种方法
  4. python刷视频挣钱_薅羊毛--使用python+adb实现自动刷视频点赞
  5. 计算机表演赛分赛区决赛,国际儿童节计算机表演赛 天津分赛区决赛开始
  6. mac安装win7之后鼠标失灵_苹果电脑装WIN7鼠标不能动怎么处理
  7. 安全组设置IP段 -- 示列
  8. ta点读笔客户端_点读笔到底哪支好?12款点读笔评测:看完不再稀里糊涂
  9. lumen 项目根目录_Lumen 初体验(二)
  10. 有计划,坚决执行——写给大三犹豫的女生