java模拟post请求发送json

java模拟post请求发送json,用两种方式实现,第一种是HttpURLConnection发送post请求,第二种是使用httpclient模拟post请求,

方法一:

 1 package main.utils;
 2
 3 import java.io.*;
 4 import java.net.HttpURLConnection;
 5 import java.net.URL;
 6
 7 public class HttpUtilTest {
 8     Log log = new Log(this.getClass());//初始化日志类
 9     /**
10      * @作用 使用urlconnection
11      * @param url
12      * @param Params
13      * @return
14      * @throws IOException
15      */
16     public String sendPost(String url,String Params)throws IOException{
17         OutputStreamWriter out = null;
18         BufferedReader reader = null;
19         String response="";
20         try {
21             URL httpUrl = null; //HTTP URL类 用这个类来创建连接
22             //创建URL
23             httpUrl = new URL(url);
24             //建立连接
25             HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();
26             conn.setRequestMethod("POST");
27             conn.setRequestProperty("Content-Type", "application/json");
28             conn.setRequestProperty("connection", "keep-alive");
29             conn.setUseCaches(false);//设置不要缓存
30             conn.setInstanceFollowRedirects(true);
31             conn.setDoOutput(true);
32             conn.setDoInput(true);
33             conn.connect();
34             //POST请求
35             out = new OutputStreamWriter(
36                     conn.getOutputStream());
37             out.write(Params);
38             out.flush();
39             //读取响应
40             reader = new BufferedReader(new InputStreamReader(
41                     conn.getInputStream()));
42             String lines;
43             while ((lines = reader.readLine()) != null) {
44                 lines = new String(lines.getBytes(), "utf-8");
45                 response+=lines;
46             }
47             reader.close();
48             // 断开连接
49             conn.disconnect();
50
51             log.info(response.toString());
52         } catch (Exception e) {
53         System.out.println("发送 POST 请求出现异常!"+e);
54         e.printStackTrace();
55         }
56         //使用finally块来关闭输出流、输入流
57         finally{
58         try{
59             if(out!=null){
60                 out.close();
61             }
62             if(reader!=null){
63                 reader.close();
64             }
65         }
66         catch(IOException ex){
67             ex.printStackTrace();
68         }
69     }
70
71         return response;
72     }
73 }

 方法二:使用httpclient实现

 1 //post请求方法
 2     public  String sendPost(String url, String data) {
 3         String response = null;
 4         log.info("url: " + url);
 5         log.info("request: " + data);
 6         try {
 7             CloseableHttpClient httpclient = null;
 8             CloseableHttpResponse httpresponse = null;
 9             try {
10                 httpclient = HttpClients.createDefault();
11                 HttpPost httppost = new HttpPost(url);
12                 StringEntity stringentity = new StringEntity(data,
13                         ContentType.create("text/json", "UTF-8"));
14                 httppost.setEntity(stringentity);
15                 httpresponse = httpclient.execute(httppost);
16                 response = EntityUtils
17                         .toString(httpresponse.getEntity());
18                 log.info("response: " + response);
19             } finally {
20                 if (httpclient != null) {
21                     httpclient.close();
22                 }
23                 if (httpresponse != null) {
24                     httpresponse.close();
25                 }
26             }
27         } catch (Exception e) {
28             e.printStackTrace();
29         }
30         return response;
31     }

 

时间: 2024-08-07 17:01:28

java模拟post请求发送json的相关文章

java模拟post请求发送json数据

import com.alibaba.fastjson.JSONObject; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; import org.apa

Java模拟POST请求发送二进制数据

在进行程序之间数据通信时我们有时候就需要自定义二进制格式,然后通过HTTP进行二进制数据交互.交互的示例代码如下: public static void main(String[] args) { String result = ""; try { String url = "http://localhost:8080/Demo/SiteApi"; URL realUrl = new URL(url); // 打开和URL之间的连接 URLConnection co

php模拟post请求发送文件

由于项目需要,需要本地服务器接收数据后,再将数据转发到另外一台服务器上,故要用到模拟post请求发送数据,当然数据中也包含文件流. curl是php比较常用的方式之一,一般代码如下: $params1 = "test"; $params2 = "@".$absolute_path;//如果是文件 则参数为"@"+绝对路径 $post_data = array( 'params1' => $params1, 'params2' => $

java 模拟http请求

整理一下用java模拟http请求的方法,如果有不正确的地方希望大家指正,如果大家有什么更好的方法欢迎提出 1.URLConnection可以向URL地址发送请求,读取URL的资源.建立和URL的连接通常需要一下几步: 创建URL对象,并通过调用openConnection方法获得URLConnection对象: 设置URLConnection参数和普通请求属性: 向远程资源发送请求: 远程资源变为可用,程序可以访问远程资源的头字段和通过输入流来读取远程资源返回的信息. import java.

java使用httpcomponents post发送json数据

一.适用场景 当我们向第三方系统提交数据的时候,需要调用第三方系统提供的接口.不同的系统提供的接口也不一样,有的是SOAP Webservice.RESTful Webservice 或其他的.当使用的是RESTful webservice的时候,就可以使用httpcomponents组件来完成调用. 如我们需要发起post请求,并将数据转成json格式,设置到post请求中并提交. url:"http://www.xxxxx.com/message" json数据格式 {"

关于curl java 模拟http请求

近期笔者项目需求java模拟http请求,获取dns解析 tcp连接等详细耗时信息. java api中提供的urlConnection 及apache提供的httpClient都不能胜任该需求,二次开发太费时间.于是google之. 最后 得出两种解决办法: 一是使用HTTP4J. 该开源项目使用socket方式,模拟请求,记录时间戳,基本满足需求.对于header自定义等细节,可在此基础上比较方便的二次开发.只是,其中有一些bug需要修复, 如https链接时获取不到ssl时间等.使用该项目

curl java 模拟http请求

curl java 模拟http请求 直接上代码: 1 public static void main(String args[]) throws Exception { 2 3 String url = "https://www.baidu.com"; 4 String[] cmds = {"curl",url}; 5 ProcessBuilder pb = new ProcessBuilder(cmds); 6 pb.redirectErrorStream(tr

PHP如何通过Http Post请求发送Json对象数据?

因项目的需要,PHP调用第三方 Java/.Net 写好的 Restful Api,其中有些接口,需要 在发送 POST 请求时,传入对象. Http中传输对象,最好的表现形式莫过于JSON字符串了,但是作为参数的接收方,又是需要被告知传过来的是JSON! 其实这不难,只需要发送一个 http Content-Type头信息即可,即 “Content-Type: application/json; charset=utf-8”,参考代码如下: <?php /** * PHP发送Json对象数据

Java模拟http请求远程调用接口工具类

package ln; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 用于模拟HTTP请求中GET/POST方式 * @author landa *