Android开发中
麻烦各位大佬帮忙编写HTTP_POST类的send(String ip,String poems)方法,参数为服务器地址(String ip)和请求内容(String poems),用post请求访问服务器,send方法的返回值为服务器响应内容。
要求:不使用任何框架。
参数实例:
服务器地址(String ip)如:"http://192.168.1.100:8000/"
请求内容(String poems)如:"?username=1234&password=123456"
权限已经打开,麻烦各位大佬给出详细代码(从导包开始)和详细注释
用系统api就行了
/**
* POST请求
*
* @param url url
* @param map 请求参数的map集合形式
* @return
*/
public static String post(final String url, final Map<String, String> map) {
final StringBuilder sb = new StringBuilder();
FutureTask<String> task = new FutureTask<String>(new Callable<String>() {
@Override
public String call() throws Exception {
DataOutputStream out = null;
BufferedReader br = null;
URLConnection conn;
URL posturl = new URL(url);
try {
conn = posturl.openConnection();//创建连接
conn.setDoInput(true);//post请求必须设置
conn.setDoOutput(true);//post请求必须设置
out = new DataOutputStream(conn
.getOutputStream());//输出流
StringBuilder request = new StringBuilder();
for (String key : map.keySet()) {
request.append(key + "=" + URLEncoder.encode(map.get(key), "UTF-8") + "&");
}//连接请求参数
out.writeBytes(request.toString());//输出流写入请求参数
out.flush();
out.close();
br = new BufferedReader(new InputStreamReader(conn.getInputStream()));//获取输入流
String line;
while ((line = br.readLine()) != null) {
sb.append(line);
}
System.out.println(sb.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {//执行流的关闭
if (br != null) {
br.close();
}
if (out != null) {
out.close();
} }
return sb.toString(); }
});
String s = null;
new Thread(task).start();
try {
s = task.get();//异步获取返回值
} catch (Exception e) {
e.printStackTrace();
}
return s;
}
}
参考文章 :https://blog.csdn.net/tectrol/article/details/87348381