日前老师讲了一个xutils框架,看着挺好用哒,可是有那么一个地方就是感觉好麻烦的样子(post请求的传参问题),于是爱钻牛角夹的我就写了一个方法可以用于调用,可以使传参的时候稍微方便一点。
问题:fiddler抓到了一个post请求的请求参数是这样的
String params="access_token=7198a3e&bi_channel=xiaomi&os=1&bi_terminal=hz_app&version=3.5.5.3&mac=866963025193329×tamp=1471248592365&type=";
//xutils请求
RequestParams params = new RequestParams("utf-8");
params.addBodyParameter(" access_token "," 7198a3e ");
params.addBodyParameter(" bi_channel "," xiaomi ");
params.addBodyParameter(" os ","1 ");
params.addBodyParameter(" bi_terminal"," hz_app ");
params.addBodyParameter("version ","3.5.5.3 ");
params.addBodyParameter("mac ","866963025193329");
params.addBodyParameter("timestamp","1471248592365");
params.addBodyParameter("type"," ");
.
.
.
省略底下的请求过程,反正这个传参让我恼火了(这么麻烦!),于是我做了个工作是这样的(同方便遇到和我有相同问题的小伙伴解决,小伎俩献丑了):
/**写一个工具类解决此问题*/
public class HttpRequestByXUtils {
// 写一个方法只获得参数(返回参数)
public static RequestParams getParams(String parameter) {
RequestParams params = new RequestParams("utf-8");
/** 写请求参数 */
String[] paras = parameter.split("&");
// 请求参数用&分开
for (int i = 0; i < paras.length; i++) {
// 请求参数用=分开
String[] param = paras[i].split("=");
String name = null, value = null;
for (int j = 0; j < param.length; j++) {
if (j == 0) {
name = param[j];
} else {
value = param[j];
}
}
params.addBodyParameter(name, value);
}
return params;
}
}