急!使用httpURLConnection转发http请求时不能获得响应信息(30分)

  • 主题发起人 主题发起人 panchenglin
  • 开始时间 开始时间
P

panchenglin

Unregistered / Unconfirmed
GUEST, unregistred user!
使用httpURLConnection转发http请求时不能获得响应信息,代码如下
public void run(){
try{
/**
* 创建BufferedReader对象读取http请求信息,
* 和客户端的连接建立以后,服务端从Socket中获得输入流和输出流,就能与客户端交换数据。
*/
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println("(2)使用BufferedReader类的对象接收网点业务电脑发送的请求信息: ");
// 读取第一行, 请求地址
String line=in.readLine();
//System.out.println(line);
String resource=line.substring(line.indexOf('/'),line.lastIndexOf('/')-5);
//获得请求的资源的地址
resource=URLDecoder.decode(resource, "UTF-8");//反编码 URL 地址
System.out.println(resource);
String method = new StringTokenizer(line).nextElement().toString();// 获取请求方法, GET 或者 POST

System.out.println("(3)使用URL类和HttpURLConnection类的对象把网点业务电脑的请求转发到前置机:");

URL url=new URL("Http://192.168.98.128:600");

//设置此类是否应该自动执行 HTTP 重定向(响应代码为 3xx 的请求)。
HttpURLConnection.setFollowRedirects(true);
HttpURLConnection httpURLConnection=(HttpURLConnection)url.openConnection();

httpURLConnection.setRequestMethod("POST");
//httpURLConnection.setInstanceFollowRedirects(true);
httpURLConnection.setDoOutput(true);
httpURLConnection.setDoInput(true);

httpURLConnection.getOutputStream().write(resource.getBytes("UTF-8"));
httpURLConnection.getOutputStream().flush();
httpURLConnection.getOutputStream().close();
//*****************************程序执行到此不再向下执行******************************

//System.out.println("responseMessage: " + httpURLConnection.getResponseMessage());
try{

System.out.println("responseCode=" + httpURLConnection.getResponseCode());
//if (httpURLConnection.getResponseCode()==HttpURLConnection.HTTP_OK)
// System.out.println("--- 转发程序和通讯前置机建立Http连接成功 ---");
InputStream inDis=httpURLConnection.getInputStream();
in.close();

BufferedReader br = new BufferedReader(new InputStreamReader(inDis));
String text="";
System.out.println("(4)使用BufferedReader类的对象读取通讯前置机Http连接返回的信息");
System.out.println("(5)使用BufferedWriter类的对象将通讯前置机Http连接返回信息转发给网点业务电脑");
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

try{
while((text = br.readLine())!= null){
//打印测试信息
System.out.println(text);
//写入单个字符
bw.write(text);
//刷新该流的缓冲
bw.flush();
}
}catch(IOException e){
e.printStackTrace();
}finally{
br.close();
//关闭BufferedReader类的对象
//bw.close();
//关闭BufferedWriter类的对象
}
}catch(IOException e){
e.printStackTrace();
}finally{
System.out.println("--- 断开Http转发服务器和通讯前置机的Http连接--- ");
System.out.println("===================================================================");

httpURLConnection.disconnect();
}
}catch(IOException e){
try{
socket.close();
System.out.println("--- 释放转发线程占有的socket资源 ---");
}catch(IOException ex){
ex.printStackTrace();
}
e.printStackTrace();
}
}
 
后退
顶部