利用接口获取手机验证码

1、为什么要做?价值在哪里?
iOS设备登录页面密码输入框是加密的,导致我们获取不到输入密码框控件元素。
2、目的:
万能登录方法,不需要账号密码,快速登录(因为每天有次数限制,把手机号加入白名单)。
【利用接口获取手机验证码】3、整体思路:
利用服务端获取验证码接口,在发送验证码后,调用此接口并获取返回值中的验证码信息。
4、实现方法:
(1)测试环境和正式环境的域名不同,根据不同环境,接口请求的域名也不同,要一一对应:
publicstaticvoidmain(String[]args)throwsException {
Stringmobile="xxx";
System.out.println(getUrl(GetCode.CODE_URL_QA,mobile));
}
(2)接口请求的URL由域名、路径和手机号组成,手机号应为可变参数:
publicstaticString getUrl(Stringurl, Stringmobile){
StringurlReq=url+mobile+"......";
return urlReq;
}
(3)通过接口返回值提取验证码:
publicstaticString getResponse(Stringurl) {
// 构造HttpClient的实例
HttpClienthttpClient=newHttpClient();
// 创建GET方法的实例
GetMethodgetMethod=newGetMethod(url);
// 使用系统提供的默认的恢复策略
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,newDefaultHttpMethodRetryHandler());
Stringcode=" ";
try{
// 执行getMethod
int statusCode = httpClient.executeMethod(getMethod);
if(statusCode== HttpStatus.SC_OK) {
// 读取内容
byte[]responseBody=getMethod.getResponseBody();
// 处理内容
// System.out.println(new String(responseBody));
JSONObjectjsonObject= JSONObject.fromObject(newString(responseBody));
Stringstri=jsonObject.getString("data");
JSONObjectjsonObject1= JSONObject.fromObject(stri);
JSONArraystr2=jsonObject1.getJSONArray("data");
JSONObjectjsonObject2=str2.getJSONObject(0);
jsonObject2.getString("code");
code=jsonObject2.getString("code");
// System.out.println(code);
}
}catch(Exceptione) {
e.printStackTrace();
}finally {
// 释放连接
getMethod.releaseConnection();
}
return code;
}

    推荐阅读