javacurlhttp请求时间细节,怎么实现
发布时间:2025-05-25 02:12:06 发布人:远客网络
一、javacurlhttp请求时间细节,怎么实现
以下代码是Java实现Http的Post、Get、代理访问请求,可以参考一下
packagecom.snowfigure.kits.net;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
importjava.io.UnsupportedEncodingException;
importjava.net.HttpURLConnection;
importjava.net.InetSocketAddress;
staticStringproxyHost="127.0.0.1";
publicstaticStringurlEncode(Stringsource,Stringencode){
result=java.net.URLEncoder.encode(source,encode);
}catch(UnsupportedEncodingExceptione){
publicstaticStringurlEncodeGBK(Stringsource){
result=java.net.URLEncoder.encode(source,"GBK");
}catch(UnsupportedEncodingExceptione){
publicstaticStringhttpRequest(Stringreq_url){
StringBufferbuffer=newStringBuffer();
HttpURLConnectionhttpUrlConn=(HttpURLConnection)url.openConnection();
httpUrlConn.setDoOutput(false);
httpUrlConn.setUseCaches(false);
httpUrlConn.setRequestMethod("GET");
InputStreaminputStream=httpUrlConn.getInputStream();
InputStreamReaderinputStreamReader=newInputStreamReader(inputStream,"utf-8");
BufferedReaderbufferedReader=newBufferedReader(inputStreamReader);
while((str=bufferedReader.readLine())!=null){
System.out.println(e.getStackTrace());
publicstaticInputStreamhttpRequestIO(StringrequestUrl){
HttpURLConnectionhttpUrlConn=(HttpURLConnection)url.openConnection();
httpUrlConn.setRequestMethod("GET");
inputStream=httpUrlConn.getInputStream();
*请求参数,请求参数应该是name1=value1&name2=value2的形式。
*@returnURL所代表远程资源的响应结果
publicstaticStringsendGet(Stringurl,Stringparam){
StringurlNameString=url+"?"+param;
URLrealUrl=newURL(urlNameString);
URLConnectionconnection=realUrl.openConnection();
connection.setRequestProperty("accept","*/*");
connection.setRequestProperty("connection","Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)");
Map<String,List<String>>map=connection.getHeaderFields();
System.out.println(key+"--->"+map.get(key));
//定义BufferedReader输入流来读取URL的响应
in=newBufferedReader(newInputStreamReader(
connection.getInputStream()));
while((line=in.readLine())!=null){
System.out.println("发送GET请求出现异常!"+e);
*请求参数,请求参数应该是name1=value1&name2=value2的形式。
*@return所代表远程资源的响应结果
publicstaticStringsendPost(Stringurl,Stringparam,booleanisproxy){
@SuppressWarnings("static-access")
Proxyproxy=newProxy(Proxy.Type.DIRECT.HTTP,newInetSocketAddress(proxyHost,proxyPort));
conn=(HttpURLConnection)realUrl.openConnection(proxy);
conn=(HttpURLConnection)realUrl.openConnection();
//发送POST请求必须设置如下两行
conn.setRequestMethod("POST");//POST方法
conn.setRequestProperty("accept","*/*");
conn.setRequestProperty("connection","Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)");
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
//获取URLConnection对象对应的输出流
out=newOutputStreamWriter(conn.getOutputStream(),"UTF-8");
//定义BufferedReader输入流来读取URL的响应
newInputStreamReader(conn.getInputStream()));
while((line=in.readLine())!=null){
System.out.println("发送POST请求出现异常!"+e);
//使用finally块来关闭输出流、输入流
publicstaticvoidmain(String[]args){
Stringurl="";
Stringpara="key=youkeyid&youuid=uid&advert_type=int&domain=adf.ly&url=";
Stringsr=HttpRequestUtil.sendPost(url,para,true);
二、java怎么发送post请求参数
在Java中,向指定URL发送POST请求参数,可以使用URLConnection类。下面是一个示例方法:
public static String sendPost(String url, String param){
URLConnection conn= realUrl.openConnection();
conn.setRequestProperty("accept","*/*");
conn.setRequestProperty("connection","Keep-Alive");
conn.setRequestProperty("user-agent","Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1;SV1)");
//发送POST请求必须设置如下两行
//获取URLConnection对象对应的输出流
out= new PrintWriter(conn.getOutputStream());
//定义BufferedReader输入流来读取URL的响应
in= new BufferedReader(new InputStreamReader(conn.getInputStream()));
while((line= in.readLine())!= null){
System.out.println("发送 POST请求出现异常!"+e);
//使用finally块来关闭输出流、输入流
这个方法接收两个参数:URL和参数。参数应该是name1=value1&name2=value2的形式。通过设置请求属性和开启输出流,我们可以发送POST请求,并读取响应结果。
此方法在发送POST请求时,会处理异常,并确保在finally块中关闭输出流和输入流,以避免资源泄漏。通过这种方式,我们可以有效地与远程服务器进行交互。
需要注意的是,在实际应用中,我们可能需要根据需求对这个方法进行调整,例如添加错误处理逻辑,或者支持更复杂的请求头设置。
总之,这是一个基本的Java实现POST请求的方法,适用于许多场景。通过它,我们可以轻松地与服务器进行通信,发送数据并接收响应。
三、java服务器接收客户端请求怎样实现的
import java.io.BufferedReader;
import java.io.InputStreamReader;
//构造服务器ServerSocket对象,参数为服务器端开放的端口号
ServerSocket ss= new ServerSocket(30102);
System.out.println("服务器准备就绪!");
//死循环可以使服务器持续处于接收客户端状态
//该方法使程序阻塞,等待客户端的链接,当监听到客户端的链接,创建一个Socket对象与客户端单独会话
//为了不影响服务器监听其它客户端,这里开启了一个线程,由线程处理与这个客户端的会话
public static void main(String[] args){
class ServerThread extends Thread{
private BufferedReader read= null;
private PrintStream print= null;
public ServerThread(Socket s){
//从Socket中获取输入流和输出流,由于我们只做一个简单的字符串通讯,所以采用BufferedRead和PrintStream来封装输入、输出流
read= new BufferedReader(new InputStreamReader(s.getInputStream()));
print= new PrintStream(s.getOutputStream());
//这里循环可以使服务器持续的接收客户端信息。read.readLine()通过输入流读取一段字符串,赋值给message变量,如果message字符串不为“exit”则循环,否则结束循环
while(!(message= read.readLine()).equals("exit")){
//将字符串前面添加“返回:”,再发回客户端
print.println("返回:"+ message);
//在 finally代码块中无论如何都会执行下面代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.UnknownHostException;
//构造与服务器通讯的Socket对象,参数为服务器IP地址(String)和端口号(int),端口号需要和服务器端开放的端口号对应
Socket s= new Socket("192.168.1.100", 30102);
//启动一个线程与服务器通讯,并把链接服务器的Socket对象传递过去
} catch(UnknownHostException e){
public static void main(String[] args){
class LinkThread extends Thread{
private PrintStream out= null;
private BufferedReader in= null;
private Scanner scanner= null;
//将Socket对象实例保存在全局变量中,因为run方法中我们还要用它断开链接
//从Socket中获取输入流和输出流,由于我们只做一个简单的字符串通讯,所以采用BufferedRead和PrintStream来封装输入、输出流
out= new PrintStream(s.getOutputStream());
in= new BufferedReader(new InputStreamReader(s.getInputStream()));
} catch(UnknownHostException e){
scanner= new Scanner(System.in);
System.out.println("提示:如果要结束本次会话,请输入“exit”指令!");
//死循环可以使客户端不断的向服务器发送信息,不用担心循环无法结束,后面的return语句可以结束整个线程。
System.out.print("请输入:");
//将用户输入的字符串保存在message变量中
String message= scanner.nextLine();
System.out.println("本次会话结束!");
//在 finally代码块中无论如何都会执行下面代码: