在企业开发中,很多时候需要用到两个服务端的对接,在java类中进行连接并传递参数,其中的HttpURLConnection是一种轻量化,并且简单的方法!

package httptest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

import net.sf.json.JSONObject;

/*

*      请求类,分为post和get两个方法

*/

public class HttpClientHandle {

private static int HttpTimeOut = 20000; // 连接超时时间
private static String Method_Get = "GET"; // get方式
private static String Method_Post = "POST"; // post方式


public static void main(String[] args) {

Map<String, Object> fieldMap =new HashMap<String, Object>();
fieldMap.put("result","8888");
fieldMap.put("rest","888");
JSONObject jsonObject = JSONObject.fromObject(fieldMap);
String msg = new HttpClientHandle().post(jsonObject.toString(),"http://localhost:8080/SSM/teacher/insert");

//get方法

//String msg = new HttpClientHandle().get("","http://localhost:8080/SSM/teacher/update/10101542452425");
System.out.println(msg);
}

/**
*
* @param xmlmsg
* @param ServerUrl
* @param method
* @return
*/
public String sendHttpXML(String xmlmsg, String ServerUrl, String method) {
OutputStream out = null;
BufferedReader rs = null;
try {
// 1、建立连接
URL url = new URL(ServerUrl);
HttpURLConnection urlcon = (HttpURLConnection) url.openConnection();
urlcon.setReadTimeout(HttpTimeOut);
urlcon.setConnectTimeout(HttpTimeOut);
urlcon.setDoOutput(true);
urlcon.setDoInput(true);
urlcon.setRequestMethod(method);

//一定要设置 Content-Type 要不然服务端接收不到参数

urlcon.setRequestProperty("Content-Type", "application/Json;charset=UTF-8");

// 2、发送消息
if(Method_Post.equals(method) && !"".equals(xmlmsg)) {
out = urlcon.getOutputStream();
//Log.debug("==================sendHttpXML: " + xmlmsg);
out.write(xmlmsg.getBytes("UTF-8"));
out.flush();
}
urlcon.connect();

// 3、接收消息
rs = new BufferedReader(new InputStreamReader(urlcon.getInputStream(),"UTF-8"));
String line = rs.readLine();
StringBuffer str = new StringBuffer();
while(null != line) {
str.append(line);
line = rs.readLine();
}
//Log.debug("==================return xml" + str.toString());

return str.toString();

} catch (IOException e) {
//Log.infoStackTrace(e);
return null;
} catch (Exception e) {
//Log.infoStackTrace(e);
return null;
} finally {
if (rs != null) {
try {
rs.close();
rs = null;
} catch (IOException e) {
//Log.warnStackTrace(e);
}
}
if (out != null) {
try {
out.close();
out = null;
} catch (IOException e) {
//Log.warnStackTrace(e);
}
}
}
}

/**
* POST方式请求
* @param xmlmsg
* @param ServerUrl
* @return
*/
public String post(String xmlmsg, String ServerUrl) {
return sendHttpXML(xmlmsg, ServerUrl, Method_Post);
}

/**
* GET方式请求
* @param xmlmsg
* @param ServerUrl
* @return
*/
public String get(String xmlmsg, String ServerUrl) {
return sendHttpXML(xmlmsg, ServerUrl, Method_Get);
}

}

--------------------------------------------------接收方法------------------------

//Post
@RequestMapping("/insert")
public String toAddTeacherPage(HttpServletRequest request ) throws Exception {
InputStreamReader reader=new InputStreamReader(request.getInputStream());
BufferedReader buffer=new BufferedReader(reader);
String data=buffer.readLine();
System.out.println(data);
return "insert";
}

//Get

@RequestMapping(value="/update/{id}")
public ModelAndView updateById(@PathVariable("id") String id){
System.out.println(id);
return new ModelAndView("update");
}

本文属于原创,转载请注明出处。

HttpURLConnection实现两个服务端的对接的更多相关文章

  1. httpurlconnection发送文件到服务端并接收

    httpurlconnection发送文件到服务端并接收 客户端 import java.io.DataInputStream; import java.io.File; import java.io ...

  2. android菜鸟学习笔记24----与服务器端交互(一)使用HttpURLConnection和HttpClient请求服务端数据

    主要是基于HTTP协议与服务端进行交互. 涉及到的类和接口有:URL.HttpURLConnection.HttpClient等 URL: 使用一个String类型的url构造一个URL对象,如: U ...

  3. Onvif开发之服务端成功对接Rtsp视频流篇

    前面篇介绍onvif服务端的发现功能,继续在之前的代码基础上完成一个RTSP流的工作,也就是客户端通过ONVIF协议来预览设备端在这个之前必须确定几个简单的条件1 设备端能被发现2 设备端支持RTSP ...

  4. 服务端JavaScript之Rhino

    最近在看js的书,书上有介绍两个服务端js,以前只听说过node.js,第一次听说Rhino.js,并且已经集成到了jdk1.6;看来还是见的少啊! Rhino是一种用Java编写的javaScrip ...

  5. 从服务端架构设计角度,深入理解大型APP架构升级

    随着智能设备普及和移动互联网发展,移动端应用逐渐成为用户新入口,重要性越来越突出.但企业一般是先有PC端应用,再推APP,APP 1.0版的功能大多从现有PC应用平移过来,没有针对移动自身特点考虑AP ...

  6. (二)svn服务端安装配置

    两种服务端安装包 官方安装包 官方网站:http://subversion.apache.org/ 下载:http://subversion.apache.org/download.cgi 官方提供的 ...

  7. React 服务端渲染最佳解决方案

    最近在开发一个服务端渲染工具,通过一篇小文大致介绍下服务端渲染,和服务端渲染的方式方法.在此文后面有两中服务端渲染方式的构思,根据你对服务端渲染的利弊权衡,你会选择哪一种服务端渲染方式呢? 什么是服务 ...

  8. React 服务端渲染方案完美的解决方案

    最近在开发一个服务端渲染工具,通过一篇小文大致介绍下服务端渲染,和服务端渲染的方式方法.在此文后面有两中服务端渲染方式的构思,根据你对服务端渲染的利弊权衡,你会选择哪一种服务端渲染方式呢? 什么是服务 ...

  9. go语言游戏服务端开发(一)——架构

    五邑隐侠,本名关健昌,12年游戏生涯. 本教程以Go语言为例.   网络游戏程序分为客户端和服务端.客户端负责图形渲染.交互和一些简单校验处理,服务端负责业务逻辑处理.数据存储. 我们开发一个游戏de ...

随机推荐

  1. CodeForces 460B

    Little Dima and Equation Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & ...

  2. Wireshark网络抓包(一)——数据包、着色规则和提示

    一.数据包详细信息 Packet Details面板内容如下,主要用于分析封包的详细信息. 帧:物理层.链路层 包:网络层 段:传输层.应用层 1)Frame 物理层数据帧概况 2)Ethernet ...

  3. DotNet加密方式解析--非对称加密

    新年新气象,也希望新年可以挣大钱.不管今年年底会不会跟去年一样,满怀抱负却又壮志未酬.(不过没事,我已为各位卜上一卦,卦象显示各位都能挣钱...).已经上班两天了,公司大部分人还在休假,而我早已上班, ...

  4. Ubuntu 制作U盘启动盘

    部门需要一台Linux系统远程共享服务器,需要一个启动盘安装.但是由于公司windows 系统都安装了保安软件,而且软件的使用也是有限制的.所以不能使用UltraISO 这类软件制作U盘启动盘.还好部 ...

  5. VS Code C# 插件离线版 1.6.2

    VS Code C# 插件离线版,目前最新稳定版为:1.6.2 . 由于在扩展中下载C#插件总是缓慢,或者容易出现错误,特制作离线版本共享出来. 本离线版本为Windows版本,其他系统请在扩展中下载 ...

  6. 读书笔记 effective c++ Item3 在任何可能的时候使用 const

    Const可以修饰什么?   Const 关键字是万能的,在类外部,你可以用它修饰全局的或者命名空间范围内的常量,也可以用它来修饰文件,函数和块作用域的静态常量.在类内部,你可以使用它来声明静态或者非 ...

  7. 手动搭建apache james邮件服务器,实现邮件功能

    最近一直在搞邮件这块,本来我们邮件发送是用的腾讯免费的企业邮箱,邮件功能没有问题,但是由于邮件的限制,如下: 这些限制导致我们的部分客户是收不到邮件的,哪怕付费,这样的固定频率限制也是无法解决的,可以 ...

  8. JavaScript嗅探执行神器-sniffer.js,你值得拥有!

    一.热身--先看实战代码 a.js 文件 // 定义Wall及内部方法 ;(function(window, FUNC, undefined){ var name = 'wall'; Wall.say ...

  9. 传输控制协议TCP

    TCP主要特点: (1)面向连接 (2)只能是点到点 (3)可靠的传输协议 (4)全双工通信,各自各自的读写缓冲区,应用层吧数据交给发送缓冲区,tcp合适就发送了,接受的时候tcp写入接受缓冲区,应用 ...

  10. JAVA设计模式:模板设计模式

    1.模板设计模式,是为了体现继承的作用.它主要的作用就是在类中定义一些公共的方法和标准,而其具体的实现则叫给其子类来根据子类具体的行为来实现:因为模板设计模式中必经还有一些自己的方法不是抽象的方法,只 ...