android开发-网络编程之url携带参数
拉大锯
发表于
2019-12-10 20:21
4134
网络编程
get
post
android开发
安卓
本文为android开发基础的网络编程系列文章之一
关于权限的声明,配置,接口文档,请查看前面的内容。
其他文章请查看以下链接
接口
get方法
/get/param
参数:
- keyword 关键字
- page 页码
- order 0 顺序 1 逆序
eg:
/get/param?keyword=你好&page=1&order=0
参数在Url上,我们可以直接对其进行拼接即可。
代码
private void startRequest(final Map<String,String> params,final String method,final String api) {
new Thread(new Runnable() {
@Override
public void run() {
BufferedReader bufferedReader = null;
try {
//组装参数
StringBuilder sb = new StringBuilder();
if(params != null && params.size() > 0) {
sb.append("?");
Iterator<Map.Entry<String,String>> iterator = params.entrySet().iterator();
while(iterator.hasNext()) {
Map.Entry<String,String> next = iterator.next();
sb.append(next.getKey());
sb.append("=");
sb.append(next.getValue());
if(iterator.hasNext()) {
sb.append("&");
}
}
Log.d(TAG,"sb result -- > " + sb.toString());
}
String params = sb.toString();
URL url;
if(params != null && params.length() > 0) {
url = new URL(BASE_URL + api + params);
} else {
url = new URL(BASE_URL + api);
}
Log.d(TAG,"url -=-- > " + url.toString());
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod(method);
httpURLConnection.setRequestProperty("Accept-Language","zh-CN,zh;q=0.9");
httpURLConnection.setRequestProperty("Accept","*/*");
httpURLConnection.connect();
int responseCode = httpURLConnection.getResponseCode();
if(responseCode == HttpURLConnection.HTTP_OK) {
InputStream inputStream = httpURLConnection.getInputStream();
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String json = bufferedReader.readLine();
Log.d(TAG,"result -=-=- > " + json);
}
} catch(Exception e) {
e.printStackTrace();
} finally {
if(bufferedReader != null) {
try {
bufferedReader.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
}
}).start();
}
测试
post/get都可以
public void getWithParams(View view) {
Map<String,String> params = new HashMap<>();
params.put("keyword","这是我的关键字Keyword");
params.put("page","12");
params.put("order","0");
startRequest(params,"GET","/get/param");
}
public void postWithParams(View view) {
Map<String,String> params = new HashMap<>();
params.put("string","这是我提交的字符串");
startRequest(params,"POST","/post/string");
}
这应该是相比于无参数的请求来说,是最简单的了。其他请求方式亦然。