JAVA使用原始HttpURLConnection发送POST数据

package com.newflypig.demo;
/**
 * 使用jdk自带的HttpURLConnection向URL发送POST请求并输出响应结果
 * 参数使用流传递,并且硬编码为字符串"name=XXX"的格式
 */
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

public class SendPostDemo {

	public static void main(String[] args) throws Exception{
		String urlPath = new String("http://localhost:8080/Test1/HelloWorld");
		//String urlPath = new String("http://localhost:8080/Test1/HelloWorld?name=丁丁".getBytes("UTF-8"));

		String param="name="+URLEncoder.encode("丁丁","UTF-8");

		//建立连接
		URL url=new URL(urlPath);
		HttpURLConnection httpConn=(HttpURLConnection)url.openConnection();

		//设置参数
		httpConn.setDoOutput(true);		//需要输出
		httpConn.setDoInput(true);		//需要输入
		httpConn.setUseCaches(false); 	//不允许缓存
		httpConn.setRequestMethod("POST"); 		//设置POST方式连接

		//设置请求属性
		httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
		httpConn.setRequestProperty("Connection", "Keep-Alive");// 维持长连接
		httpConn.setRequestProperty("Charset", "UTF-8");

		//连接,也可以不用明文connect,使用下面的httpConn.getOutputStream()会自动connect
		httpConn.connect();

		//建立输入流,向指向的URL传入参数
		DataOutputStream dos=new DataOutputStream(httpConn.getOutputStream());
		dos.writeBytes(param);
		dos.flush();
		dos.close();

		//获得响应状态
		int resultCode=httpConn.getResponseCode();
		if(HttpURLConnection.HTTP_OK==resultCode){
			StringBuffer sb=new StringBuffer();
			String readLine=new String();
			BufferedReader responseReader=new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8"));
			while((readLine=responseReader.readLine())!=null){
				sb.append(readLine).append("\n");
			}
			responseReader.close();
			System.out.println(sb.toString());
		}
	}
}

  

JAVA使用HttpURLConnection发送POST数据是依靠OutputStream流的形式发送

具体编码过程中,参数是以字符串“name=XXX”这种形式发送

时间: 2024-11-11 09:53:52

JAVA使用原始HttpURLConnection发送POST数据的相关文章

java使用httpcomponents post发送json数据

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

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

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 使用原生HttpURLConnection发送post请求

import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.text.SimpleDateFormat; import java.util.Cale

java使用https post发送json数据

package com.saygou.weixin; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.security.KeyManagementException; import java.security.NoSuchAlg

使用httpclient实现http链接池与使用HttpURLConnection发送http请求的方法与性能对比

使用httpclient实现http链接池与使用HttpURLConnection发送http请求的方法与性能对比 在项目中需要使用http调用接口,实现了两套发送http请求的方法,一个是使用apache的httpclient提供的http链接池来发送http请求,另一个是使用java原生的HttpURLConnection来发送http请求,并对两者性能进行了对比. 使用httpclient中的链接池发送http请求 使用最新的4.5.2版httpclient进行实现.在maven中引入 <

HttpURLConnection发送请求

每个 HttpURLConnection 实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络.请求后在 HttpURLConnection 的 InputStream 或 OutputStream 上调用 close() 方法可以释放与此实例关联的网络资源,但对共享的持久连接没有任何影响.如果在调用 disconnect() 时持久连接空闲,则可能关闭基础套接字.JAVA使用HttpURLConnection发送POST数据是依靠OutputStream流的形

【笔记——Java】关于HttpUrlConnection获取数据中文乱码问题

前段时间写了一个从顺丰获取快递信息的程序,通过HttpUrlConnection 获取的数据乱码,明明拦截的数据写着utf-8还是乱码,后来终于发现原因是没有对数据进行解压,上拦截图: 总算是找到问题所在了,数据传输似乎会先压缩,估计是为了传输效率吧. 于是乎先进行解压吧: 1 /** 2 * 这是一个静态方法,数据工具方法,传入输入流in,以及数据长度,就能获取解压后的结果byte数组 3 * @param in 一个输入流,可以通过HttpUrlConnection对象的getInputSt

Java 通过Socket编程 发送和接收数据

Socket client = null; try{     client = new Socket(Ip,Port);     String msg="发送的数据内容!";     //得到socket读写流,向服务端程序发送数据       client.getOutputStream().write(msg.getBytes());     byte[] datas = new byte[2048];     //从服务端程序接收数据     client.getInputStr