httpClient发送key_value、json参数及文件
发布日期:2021-06-30 18:39:48
浏览次数:4
分类:技术文章
本文共 6363 字,大约阅读时间需要 21 分钟。
本文使用的是httpClient实现发送key_value参数、json参数,上传单个文件,上传多个文件的功能,是目前市面上很多网络请求封装工具类的实现原理。
PostActivity:
import java.io.File;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.StringEntity;import org.apache.http.entity.mime.MultipartEntity;import org.apache.http.entity.mime.content.ContentBody;import org.apache.http.entity.mime.content.FileBody;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;/** * @author CSDN_LQR * @工程 7ZipDemo * @包名 com.lqr.zipdemo * @TODO 使用httpClient实现发再key_value参数、json参数、上传多个文件 */public class PostActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO super.onCreate(savedInstanceState); setContentView(R.layout.activity_post); /* =============== post key_value =============== */ findViewById(R.id.btnKeyValue).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { HashMapparams = new HashMap (); params.put("name", "SCDN_LQR"); // 发送key_value形式的post请求 postKeyValue(params); } }); /* =============== post key_jsonString=============== */ findViewById(R.id.btnJsonString).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { String jsonString = "{\"name\":\"CSDN_LQR\"}"; postJsonString(jsonString); } }); /* =============== post key_File 单张图片=============== */ findViewById(R.id.btnSingleFile).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { File file = new File("c:/a.txt"); postSingleFile(file); } }); /* =============== post key_File 多张图片=============== */ findViewById(R.id.btnMultFile).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { Map fileMap = new HashMap (); File actimgFile = null; File listimgFile = null; fileMap.put("actimg", actimgFile); fileMap.put("listimg", listimgFile); postMultFile(fileMap); } }); } /** * 发送多个文件,需要httpmime.jar的支持 * * @param fileMap */ private void postMultFile(final Map fileMap) { new Thread(new Runnable() { @Override public void run() { try { DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost post = new HttpPost("http://httpbin.org/post"); // 提交文件类型的参数 MultipartEntity entity = new MultipartEntity(); for (Map.Entry info : fileMap.entrySet()) { File file = info.getValue(); String key = info.getKey(); ContentBody contentBody = new FileBody(file); entity.addPart(key, contentBody); } post.setEntity(entity); HttpResponse response = httpClient.execute(post); if (response.getStatusLine().getStatusCode() == 200) { HttpEntity resEntity = response.getEntity(); String result = EntityUtils.toString(resEntity); System.out.println("result:" + result); } } catch (Exception e) { e.printStackTrace(); } } }).start(); } /** * 发送单个文件,需要httpmime.jar的支持 * * @param file */ private void postSingleFile(final File file) { new Thread(new Runnable() { @Override public void run() { try { DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost post = new HttpPost("http://httpbin.org/post"); // 提交文件类型的参数 MultipartEntity entity = new MultipartEntity(); ContentBody contentBody = new FileBody(file); entity.addPart("actimg", contentBody); post.setEntity(entity); HttpResponse response = httpClient.execute(post); if (response.getStatusLine().getStatusCode() == 200) { HttpEntity resEntity = response.getEntity(); String result = EntityUtils.toString(resEntity); System.out.println("result:" + result); } } catch (Exception e) { e.printStackTrace(); } } }).start(); } /** * 发送json形式的post请求 * * @param jsonString */ private void postJsonString(final String jsonString) { new Thread() { public void run() { try { DefaultHttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost("http://httpbin.org/post"); // 提交表单类型的参数 post.setEntity(new StringEntity(jsonString)); HttpResponse response = client.execute(post); if (response.getStatusLine().getStatusCode() == 200) { HttpEntity entity = response.getEntity(); System.out.println(EntityUtils.toString(entity)); } } catch (Exception e) { // TODO e.printStackTrace(); } }; }.start(); } /** * 发送key_value形式的post请求 * * @param paramsMap */ private void postKeyValue(final Map paramsMap) { new Thread() { public void run() { try { DefaultHttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost("http://httpbin.org/post"); List parameters = new ArrayList (); for (Entry entry : paramsMap.entrySet()) { BasicNameValuePair basicNameValuePair = new BasicNameValuePair( entry.getKey(), entry.getValue()); parameters.add(basicNameValuePair); } UrlEncodedFormEntity reqEntity = new UrlEncodedFormEntity( parameters); // 提交表单类型的参数 post.setEntity(reqEntity); HttpResponse response = client.execute(post); if (response.getStatusLine().getStatusCode() == 200) { HttpEntity resEntity = response.getEntity(); System.out.println(EntityUtils.toString(resEntity)); } } catch (Exception e) { // TODO e.printStackTrace(); } }; }.start(); }}
activity_post.xml:
转载地址:https://linqiarui.blog.csdn.net/article/details/51297777 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月17日 05时27分39秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
攻防世界web进阶区ics-04详解
2019-04-30
攻防世界web进阶区Cat详解
2019-04-30
攻防世界web进阶区bug详解
2019-04-30
攻防世界web进阶区ics-07详解
2019-04-30
攻防世界web进阶区unfinish详解
2019-04-30
攻防世界web进阶区i-got-id-200超详解
2019-04-30
sql注入总结学习
2019-04-30
leetcode46 全排列
2019-04-30
leetcode121 买卖股票的最佳时机
2019-04-30
leetcode 122 买卖股票的最佳时机II
2019-04-30
leetcode 309 最佳买卖股票含冷冻期
2019-04-30
leetcode 714 买卖股票的最佳时机含手续费
2019-04-30
leetcode3 无重复字符的最长子串
2019-04-30
leetcode 76 最小覆盖子串
2019-04-30
leetcode 1143. 最长公共子序列
2019-04-30
leetcode 83. 删除排序链表中的重复元素
2019-04-30
智能体 Intelligent Agent
2019-04-30
Network Compression网络压缩(一)
2019-04-30
GAN系列(零)—— GAN的发展(两条路线)
2019-04-30
Conditional GAN (CGAN) 条件生成网络
2019-04-30