关于java发送http报文的信息

博主:adminadmin 2023-03-22 13:03:08 946

本篇文章给大家谈谈java发送http报文,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

http如何实现同时发送文件和报文(用java实现)

你用的servlet 还是别的框架?

选POST

选form-data

选body

选File

选文件

Send

// commons fileupload组件的情况下,servlet接收的数据只能是type=file表单元素类型,那么获取type=text类型,就可以使用parseRequest(request)来获取list,fileitem,判断isFormField,为true非file类型的。就可以处理了。下面是处理的部分代码:

DiskFileItemFactory factory = new DiskFileItemFactory();factory.setSizeThreshold(1024*1024);

String dirtemp = "c:";

File filedir = new File(dirtemp + "filetemp");

String str = null;if(!filedir.exists())filedir.mkdir();factory.setRepository(filedir);

ServletFileUpload upload = new ServletFileUpload(factory);

List list = upload.parseRequest(request);for(

int i = 0;ilist.size();i++)

{

FileItem item = (FileItem) list.get(i);

if (item.isFormField()) {

System.out.println(item.getString());

} else {

String filename = item.getName();

item.write(new File(request.getRealPath(dir), filename));

}

}

java发送报文时特别慢

一、问题由来

目前在开发的这个小程序中有一个功能需要和Unity客户端进行互动操作,互动的大致流程为在微信小程序中点击一个操作,发送一个HTTP请求,

Java后台收到这个请求后,会给Unity客户端发送一条消息,并且附带图片数据。在本地进行测试的时候,发现一个问题,就是小程序收到服务器

的反馈信息很快,大约1秒左右。可是服务器给Unity客户端发送消息的时候却非常慢,等待了约7、8秒才收到服务端发送回来的消息,这完全达不

到某个操作需要快速响应的要求。

二、问题分析

问题出现后,我和同事一起开始分析原因,为什么会这么慢呢?那个同事也了解过游戏开发,比如斗地主,几个人在全国各地进行斗地主的操作,

那个响应可是很快的,可是为什么我们现在做的这个功能响应却这么慢呢?是不是由于数据量太大了呢?

三、解决方案

带着各种疑问,我们开始进行尝试,进行多次测试发现都有这个问题,并不是某一次才会出现这个问题。我们也尝试过不使用办公室的无线网络,

使用自己手机的网络,结果发现还是差不多,延迟6、7秒没什么区别。然后我们进行一种新的测试,就是在使用服务器给Unity发送socket消息的

时候,不发送2M左右的base64格式的图片数据,然后发现速度立马变快,只需1秒左右。这样问题解决,关于图片的使用,我们想其他办法解决了。这次

测试让我了解到,使用websocket传输数据时,如果附带发送图片数据,会拖慢数据传输的速率,至此问题解决。

java使用Http协议发请求报文?

1.java.net.Socket 中有一个接口叫 PackageReceiver 你创建一个类继承自PackageReceiver

2.自己写一个类ConnectToHost 定义一些常量如

public ConnectToHost()

{

port = 0;

keepAlive = false;

lastCommTime = 0;

connectionCtrl = false;

maxConnection = 10;

connections = new ArrayList();

soTimeOut = 0;

inUsedConnection = 0;

alive = true;

dual = true;

reconnectImmediately = false;

pollingWeight = 1;

}

3.写一个方法用来获取本地要发送的数据,如

private static String getRequestData(String name) throws IOException {

// TODO Auto-generated method stub

File testReq = new File("E:/virturlSend/", name);

// 输入流

FileInputStream infile = null;

InputStreamReader isr = null;

BufferedReader in = null;

String strLine = "";

StringBuffer strTotalLine = new StringBuffer();

try {

infile = new FileInputStream(testReq); // 以流的方式读配置文件

isr = new InputStreamReader(infile);

in = new BufferedReader(isr);

for (int iLine = 1; (strLine = in.readLine()) != null; iLine++) { // 从上传文件中每次读一行

// System.out.println(strLine.getBytes());

strTotalLine.append(strLine);

}

} catch (Exception ee) {

} finally {

in.close();

isr.close();

infile.close();

}

return strTotalLine.toString();

// return "baoyy";

}

4.设置主机信息 如

ConnectToHost connectToHost = new ConnectToHost();

//connectToHost.setHostAddr("20.*2.*.35");

//connectToHost.setPort(27098);

connectToHost.setHostAddr("127.*.*.1");

connectToHost.setPort(6789);

connectToHost.setMaxConnection(20);

5.发送数据

service.addConnectToHost(connectToHost);

以上代码不是全部 仅提供大体思路和构架 不知道能不能帮到您

如何用java发送http报文

给你一个吧,这个能抓取任何程序

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

public class WebClient{

public static String getWebContent(String urlString,final String charset,int timeout) throws IOException {

if(urlString==null||urlString.length()==0) {

return null;

}

urlString = (urlString.startsWith("http://") || urlString

.startsWith("https://")) ? urlString : ("http://" + urlString)

.intern();

URL url = new URL(urlString);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn

.setRequestProperty(

"User-Agent",

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");//增加报头,模拟浏览器,防止屏蔽

conn.setRequestProperty("Accept", "text/html");//只接受text/html类型,当然也可以接受图片,pdf,*/*任意,就是tomcat/conf/web里面定义那些

conn.setConnectTimeout(timeout);

try {

if(conn.getResponseCode()!=HttpURLConnection.HTTP_OK) {

return null;

}

} catch (IOException e) {

e.printStackTrace();

return null;

}

InputStream input = conn.getInputStream();

BufferedReader reader = new BufferedReader(new InputStreamReader(input,

charset));

String line = null;

StringBuffer sb = new StringBuffer();

while ((line = reader.readLine()) != null) {

sb.append(line).append("\r\n");

}

if(reader!=null) {

reader.close();

}

if(conn!=null) {

conn.disconnect();

}

return sb.toString();

}

public static String getWebContent(String urlString) throws IOException {

return getWebContent(urlString,"iso-8859-1",5000);

}

public static void main(String[]args) throws IOException {

String s = getWebContent("");

s = new String(s.getBytes("iso-8859-1"),"gb2312");

System.out.println(s);

}

}

怎么用java 发送http报文

URL url = null;

HttpURLConnection httpurlconnection = null;

try {

url = new URL("");

// 以post方式请求

httpurlconnection = (HttpURLConnection) url.openConnection();

httpurlconnection.setConnectTimeout(6000);

httpurlconnection.setReadTimeout(6000);

httpurlconnection.setDoOutput(true);

httpurlconnection.setRequestMethod("POST");

msg=java.net.URLEncoder.encode(msg,"utf-8");

String username = "UserName=userPassword=pwdSrcNumber=1065DestTermID="

+ dest+ "MsgContent=" + msg;

httpurlconnection.getOutputStream().write(

username.getBytes("utf-8"));

httpurlconnection.getOutputStream().flush();

httpurlconnection.getOutputStream().close();

// 获取响应代码

code = httpurlconnection.getResponseCode();

// 获取页面内容

java.io.InputStream in = httpurlconnection.getInputStream();

java.io.BufferedReader breader = new BufferedReader(

new InputStreamReader(in, "gb2312"));

String str = breader.readLine();

while (str != null) {

resp+=str;

str= breader.readLine();

}

} catch (Exception e) {

resp="err";

} finally {

if (httpurlconnection != null)

httpurlconnection.disconnect();

}

java发送http报文的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、java发送http报文的信息别忘了在本站进行查找喔。