利用接口获取手机验证码

1、  为什么要做?价值在哪里?

iOS设备登录页面密码输入框是加密的,导致我们获取不到输入密码框控件元素。

2、  目的:

万能登录方法,不需要账号密码,快速登录(因为每天有次数限制,把手机号加入白名单)。

3、  整体思路:

利用服务端获取验证码接口,在发送验证码后,调用此接口并获取返回值中的验证码信息。

4、  实现方法:

(1)  测试环境和正式环境的域名不同,根据不同环境,接口请求的域名也不同,要一一对应:

publicstaticvoidmain(String[]args)throwsException {

Stringmobile="xxx";

    System.out.println(getUrl(GetCode.CODE_URL_QA,mobile));

}

(2)  接口请求的URL由域名、路径和手机号组成,手机号应为可变参数:

public  staticString getUrl(Stringurl, Stringmobile){

StringurlReq=url+mobile+"......";

return urlReq;

}

(3)通过接口返回值提取验证码:

publicstatic  String 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;

}

你可能感兴趣的:(利用接口获取手机验证码)