导航:首页 > IDC知识 > http代理服务器java

http代理服务器java

发布时间:2020-11-20 11:19:01

1、JAVA请问如果我的项目部署在tomcat中,用户只要有正确的http地址就能访问我服务器上的资源,

这当然算远程调用。 webService,CXF,Hessian都有自己的协议规范,并且封装了很多错误判断。
你这个算是自定义规范,开发容易,但是容易有隐患,不容易扩展。

2、如何用Java实现Web服务器

如何用Java实现Web服务器 一、HTTP协议的作用原理

WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。HTTP协议的作用原理包括四个步骤:

(1) 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。

(2) 请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为:

GET 路径/文件名 HTTP/1.0

文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。

(3) 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。

3、JAVA中如何设置代理服务器,取消代理服务器

在JAVA中怎么设置代理服务器呢,非常简单
public void setServiceProxy(Config config) {
    this.config = config;
    System.setProperty("http.proxyHost", config.getProxyHost());
    System.setProperty("http.proxyPort", config.getProxyPort());
    System.setProperty("https.proxyHost", config.getProxyHost());
    System.setProperty("https.proxyPort", config.getProxyPort());
  }
然后在每一个HttpUrlConnection请求中,设置代理服务器用户名和密码,并进行Base64加密(看你代理服务器的要求,可能因代理服务器不同而不同),代码如下
private HttpURLConnection getProxyHttpConnection() throws IOException {
    String authorization = config.getProxyUser() + ":"
        + config.getProxyPassword();
    URL url = new URL(config.getRequestUrl());
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setRequestProperty("Proxy-Authorization",
        "Basic " + Base64.encodeBase64String(authorization.getBytes()));
    return conn;
  }

4、java 服务端怎么接收http请求

用servlet接受http的get和post请求

写servlet的doGet和doPost方法即可
web.xml配置好servlet

5、java中HttpGet和HttpClient和HttpResponse之间的联系是如何的 每一个

使用HttpClient发送请求、接收响应时,需要HttpGet,HttpResponse。步骤如下

1. 创建对象。

2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。

3. 如果需要发送请求参数,可调用HttpGet、HttpPost共同的
setParams(HetpParams
params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity
entity)方法来设置请求参数。

4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。

5. 调用HttpResponse的getAllHeaders()、
getHeaders(String
name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器
的响应内容。程序可通过该对象获取服务器的响应内容。

6. 释放连接。无论执行方法是否成功,都必须释放连接

6、java 开发一个http的代理服务器

说实话,你的问题很那个。。
不过应该也能实现。
现在问题主要是由于b不能访问c,所以c只能使用TimerTask定时去访问b。
b有2个listener,一个负责侦听来自a的请求,一个负责侦听来自b的。

b中应该会使用到多线程。
下面定义a的Request为x,c的Request为y
由于b会有多个来自a转发的请求,可能会有x1\x2\x3等很多并发的请求,所以b在初始化的时候就需要建立一个等待池.
等待池应该是单例且线程同步的,x一来就new object(request,response),然后放入list。
c的定时器一到,就访问b开放给c的listener,request y。y首先遍历等待池,取出x的request,然后用取出x的response的返回给a。直到等待池为空为止,然后y response给c。

不过要注意的是
1)你会发现,由于c给b的数据应该是放到request y里面作为参数来传的。
2)a的请求如果需要c不同数据接口的数据,那c-->b的request y里就应该包含所有的数据,然后在遍历等待池的时候根据a-->b的request x的id(可以使用sessionid)来区分取哪个。
3)最差的情况,
1,a源源不断的发出x请求,c的request遍历就死循环。
2,如果c的定时时间太短,y1还没完,y2就来了。
3,a源源不断的发出x请求,但是某一请求Xn就无法抢到资源,Xn就挂掉。

这里面很多处理你还要多加控制。

这个想法没实验过,其实如果b可以访问c,其实什么问题都没有了
最后问一句,谁给你这样的需求的?打他

7、java HTTP代理服务器开发 求助帖

说实话,你的问题很那个。。
不过应该也能实现。
现在问题主要是由于b不能访问c,所以c只能使用TimerTask定时去访问b。
b有2个listener,一个负责侦听来自a的请求,一个负责侦听来自b的。

b中应该会使用到多线程。
下面定义a的Request为x,c的Request为y
由于b会有多个来自a转发的请求,可能会有x1\x2\x3等很多并发的请求,所以b在初始化的时候就需要建立一个等待池.
等待池应该是单例且线程同步的,x一来就new object(request,response),然后放入list。
c的定时器一到,就访问b开放给c的listener,request y。y首先遍历等待池,取出x的request,然后用取出x的response的返回给a。直到等待池为空为止,然后y response给c。

不过要注意的是
1)你会发现,由于c给b的数据应该是放到request y里面作为参数来传的。
2)a的请求如果需要c不同数据接口的数据,那c-->b的request y里就应该包含所有的数据,然后在遍历等待池的时候根据a-->b的request x的id(可以使用sessionid)来区分取哪个。
3)最差的情况,
1,a源源不断的发出x请求,c的request遍历就死循环。
2,如果c的定时时间太短,y1还没完,y2就来了。
3,a源源不断的发出x请求,但是某一请求Xn就无法抢到资源,Xn就挂掉。

这里面很多处理你还要多加控制。

这个想法没实验过,其实如果b可以访问c,其实什么问题都没有了
最后问一句,谁给你这样的需求的?打他

8、JAVA代码发送HTTP请求问题(我想实现和服务器进行一次连接时发送两次请求)

我觉得你这个问题的解决应该是你的程序做一次这个网站的登陆,而且这个登陆的版动作应该是需要权发生在你这段代码以前,因为你这段代码的动作其实只是访问了一下那个网站,但是没有任何的用户或者是其他的信息。
一般来说你登陆以后,你会获得一个token,用那个token就可以让网站认为你已经登陆,然后改密码什么就好办了。建议你先抓一下IE的包看看是人家的通信是怎么样的,然后用java做就好了。或者是那个网站有开发者文档就最好了。

9、java怎么实现http服务器怎么解决

参数:url:目标地址data:要post的数据比如a=1&b=2publicstringGetPostString(stringurl,stringdata){try{byte[]postBytes=Encoding.GetEncoding("utf-8").GetBytes(data);HttpWebRequestmyRequest=(HttpWebRequest)WebRequest.Create(url);myRequest.Method="POST";myRequest.ContentType="text/html";myRequest.ContentLength=postBytes.Length;myRequest.Proxy=null;StreamnewStream=myRequest.GetRequestStream();newStream.Write(postBytes,0,postBytes.Length);newStream.Close();//=(HttpWebResponse)myRequest.GetResponse();using(StreamReaderreader=newStreamReader(myResponse.GetResponseStream(),Encoding.GetEncoding("utf-8"))){stringcontent=reader.ReadToEnd();returncontent;}}catch(System.Exceptionex){returnex.Message;}}

10、怎样用JAVA实现模拟HTTP请求,得到服务器的响应时间等参数

其实你有思路了啊。问题简化一下:对一个ip,一个线程请求100次。该次请求的响内应时间容为调用httpClient前的响应时间减去接收到httpClient响应的时间。注意,本次请求是否有效要判断。平均响应时间和最大响应时间只不过是响应时间的统计而已,可以用数据库来做。就是说数据库记录每次测试请求的响应时间,成功与否。统计数据最后出来。只所以用多线程,是因为单线程顺序请求100次,不能模拟服务器真正的情况。

与http代理服务器java相关的知识