javaWeb发送Post请求的两种方式(form,json)

前提:通过HttpClient实现.

方式一:以form表单形式提交数据

jar包:

commons-logging-1.1.1.jar

httpclient-4.5.jar

httpcore-4.4.1.jar

代码实现:

客户端(此时的后台)如何发送请求:

导入:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

方法:

/**
 * 以form表单形式提交数据,发送post请求
 * @explain 
 *   1.请求头:httppost.setHeader("Content-Type","application/x-www-form-urlencoded")
 *   2.提交的数据格式:key1=value1&key2=value2...
 * @param url 请求地址
 * @param paramsMap 具体数据
 * @return 服务器返回数据
 */
public static String httpPostWithForm(String url,Map<String, String> paramsMap){
    // 用于接收返回的结果
    String resultData ="";
     try {
            HttpPost post = new HttpPost(url);
            List<BasicNameValuePair> pairList = new ArrayList<BasicNameValuePair>();
            // 迭代Map-->取出key,value放到BasicNameValuePair对象中-->添加到list中
            for (String key : paramsMap.keySet()) {
                pairList.add(new BasicNameValuePair(key, paramsMap.get(key)));
            }
            UrlEncodedFormEntity uefe = new UrlEncodedFormEntity(pairList, "utf-8");
            post.setEntity(uefe); 
            // 创建一个http客户端
            CloseableHttpClient httpClient = HttpClientBuilder.create().build();
            // 发送post请求
            HttpResponse response = httpClient.execute(post);
            
            // 状态码为:200
            if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
                // 返回数据:
                resultData = EntityUtils.toString(response.getEntity(),"UTF-8");
            }else{
                throw new RuntimeException("接口连接失败!");
            }
        } catch (Exception e) {
            throw new RuntimeException("接口连接失败!");
        }
     return resultData;
}

服务器端如何接收客户端传递的数据?

request.getParameter("key");

客户端调用测试:

public static void main(String[] args) {
    String requestUrl = "http://localhost:8070/test/rz/server/rzxx/at_VaildToken.do";
    Map<String, String> paramsMap = new HashMap<String, String>(1);
    paramsMap.put("un_value", "B022420184794C7C9D5096CC5F3AE7D2");
    // 发送post请求并接收返回结果
    String resultData = httpPostWithForm(requestUrl, paramsMap);
    System.out.println(resultData);
}

方式2:以JSONObject形式提交数据

见:https://www.cnblogs.com/Marydon20170307/p/9202987.html

 

更多资料参考上续链接.

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaWeb 中,发送 POST 请求两种常用方式form 表单方式JSON 格式数据方式。 1. form 表单方式 发送 form 表单 POST 请求的步骤如下: 1)创建一个 URL 对象,指定要访问的服务器地址; 2)打开 URL 的连接; 3)设置连接的一些属性,如请求方法(POST)、是否使用缓存等; 4)设置请求头,指定请求的内容类型为 application/x-www-form-urlencoded; 5)获取连接的输出流,将请求参数写入流中; 6)读取服务器的响应,获取响应结果。 下面是一个示例代码: ```java URL url = new URL("http://example.com/api"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); // 设置请求头 conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // 写入请求参数 String postData = "param1=value1&param2=value2"; OutputStream outputStream = conn.getOutputStream(); outputStream.write(postData.getBytes("UTF-8")); outputStream.flush(); // 读取响应结果 InputStream inputStream = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; StringBuilder response = new StringBuilder(); while ((line = reader.readLine()) != null) { response.append(line); } reader.close(); System.out.println(response.toString()); ``` 2. JSON 格式数据方式 发送 JSON 格式数据的 POST 请求的步骤如下: 1)创建一个 URL 对象,指定要访问的服务器地址; 2)打开 URL 的连接; 3)设置连接的一些属性,如请求方法(POST)、是否使用缓存等; 4)设置请求头,指定请求的内容类型为 application/json; 5)获取连接的输出流,将请求参数写入流中; 6)读取服务器的响应,获取响应结果。 下面是一个示例代码: ```java URL url = new URL("http://example.com/api"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); // 设置请求头 conn.setRequestProperty("Content-Type", "application/json"); // 写入请求参数 String postData = "{\"param1\":\"value1\",\"param2\":\"value2\"}"; OutputStream outputStream = conn.getOutputStream(); outputStream.write(postData.getBytes("UTF-8")); outputStream.flush(); // 读取响应结果 InputStream inputStream = conn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; StringBuilder response = new StringBuilder(); while ((line = reader.readLine()) != null) { response.append(line); } reader.close(); System.out.println(response.toString()); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值