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) { HashMap
params = 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Activity与service间的Messenger通信方式
下一篇:常见的content-type

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月17日 05时27分39秒