`
backbase
  • 浏览: 91457 次
  • 性别: Icon_minigender_1
  • 来自: 虾汤水库
社区版块
存档分类
最新评论

不同web服务器之间采用http发送请求以及处理返回数据

阅读更多

不同web服务器之间采用http发送请求以及处理返回数据
 1:数据采用json格式传送。
 2:双方共同约定好的密钥进行加解密。
 3:发送请求时,加密后再采用encode编码,处理请求时,不需要decode编码直接解密即可。

步骤:
    1:构造json数据格式
                String custId = "123456789";
                String partnerCode = "test";
                User user = new User(custId,partnerCode);
                JSONObject jsonObject = JSONObject.fromObject(user); //构造json格式数据
    2: 加密
                DiscuzAuthcode uc = new DiscuzAuthcode();
                String decString = uc.uc_authcode(jsonObject.toString(), "ENCODE", "9876543210");
                LOGGER.info("加密后:" + decString);

    3:发送到其它web服务器的http请求
        String connURL = "http://192.168.0.118/taobao/service/xxxxxx.do";
        String result = HttpConnection.httpConnection.sendAndReceiveHttpRequest(connURL, "param", decString);
        发送http请求大概步骤
        3.1.1 根据connURL获取http连接对象
         /**
         * 获取HTTP链接
         *
         * @return
         */
        private HttpURLConnection getHttpConnection(String connURL) {
                logger.info("request URL:" + connURL);
                URL url = null;
                HttpURLConnection httpConn = null;
                try {
                        url = new URL(connURL);
                        httpConn = (HttpURLConnection) url.openConnection();
                        httpConn.setRequestProperty("Proxy-Connection", "Keep-Alive");
                        httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                        HttpURLConnection.setFollowRedirects(true);
                        httpConn.setDoOutput(true);
                        httpConn.setDoInput(true);
                        httpConn.setRequestMethod("POST");
                        httpConn.setUseCaches(false);
                        return httpConn;
                } catch (MalformedURLException e) {
                        logger.info("", e);
                } catch (IOException e) {
                        logger.info("", e);
                }
                return null;
        }
        3.1.2:发送http请求并获取返回数据
        public String sendAndReceiveHttpRequest(String connURL, String key, String value) {
                HttpURLConnection httpConn = this.getHttpConnection(connURL);
                InputStream in = null;
                OutputStream out = null;
                try {
                        if (null == httpConn) {
                                return null;
                        }
                        httpConn.connect();
                        out = httpConn.getOutputStream();
                        DataOutputStream dos = new DataOutputStream(out);
                        dos.writeBytes(key + "=" + URLEncoder.encode(value, "UTF-8")); //写参数
                        dos.flush();
                        dos.close();
                       
                        InputStream is = httpConn.getInputStream();
                        String str = null;
                        StringBuffer buffer = new StringBuffer();
                        BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
                        while ((str = br.readLine()) != null) {
                                buffer.append(str);
                        }
                        br.close(); 
                        String data = buffer.toString();
                        return StringUtils.isBlank(data) ? null :data;
                } catch (Exception e) {
                        logger.error(e);
                } finally {
                        try {
                                if (in != null){
                                        in.close();
                                }
                        } catch (Exception e2) {}

                        try {
                                if (out != null) {
                                        out.close();
                                }
                        } catch (Exception e2) {}
                       
                        try {
                                if (httpConn != null) {
                                        httpConn.disconnect();
                                }
                        } catch (Exception e2) {}
                }
                return null;
        }
        3.3.3: web服务器处理接受到的http请求
        public ActionForward queryPoint(ActionMapping mapping, ActionForm form,
                        HttpServletRequest request, HttpServletResponse response)
                        throws Exception {
                String ciphertext = request.getParameter("param");
                String respStr = "{resultCode: '2', resultDetail: '传入的参数不正确'}";
                logger.info("queryPoint() - 密文:" + ciphertext);
                response.setCharacterEncoding("UTF-8");
                //处理请求的具体逻辑
                logger.info("queryPoint() - " + respStr);
                response.getWriter().write(respStr);
                return null;
        }

    4: 处理请求返回信息,保存到DB   
                LOGGER.info("返回的信息:" + result);
                jsonObject = JSONObject.fromObject(result);   //解析json格式数据
                String resultCode = jsonObject.getString("resultCode");
                String resultDetail = jsonObject.getString("resultDetail");
                //todo 保存返回信息到DB
    5:补充:
    用到的加密工具类DiscuzAuthcode.java和 发送请求的类HttpConnection.java

    6:用到的jar文件
    json-lib-2.2.3-jdk15.jar,json-taglib-0.4.1.jar,ezmorph-1.0.6.jar,commons-xxx.jar

分享到:
评论

相关推荐

    轻量级web服务器实现http 实现get post请求

    在本文中,我们将深入探讨如何使用C++语言和TinyHTTP源码实现一个轻量级的Web服务器,以处理HTTP协议中的GET和POST请求。这个项目是适合初学者的,可以帮助他们理解网络编程的基础,特别是HTTP协议和服务器端的实现...

    JAVA发送HTTP请求,返回HTTP响应内容

    6. 读取响应码和响应头,了解请求是否成功以及服务器返回的信息。 7. 获取响应体,通常通过`InputStream`读取响应内容并转化为字符串。 8. 封装结果到`HttpResponse`对象并返回。 `HttpResponse`是一个简单的数据...

    使用Ajax向PHP服务端发送请求并返回JSON数据

    总结起来,使用Ajax向PHP服务端发送请求并接收JSON数据涉及的主要步骤包括创建XMLHttpRequest对象、设置回调函数、打开连接、设置请求头、发送请求以及在服务端处理请求和返回JSON数据。理解这些步骤对于Web开发中的...

    HTTP协议和WEB服务器工作原理

    - **客户端发起请求**:客户端通过HTTP协议向服务器发送请求。 - **服务器接收请求**:服务器通过`ServerSocket`监听并接收客户端的连接请求。 - **创建连接**:服务器为每个连接创建新的`Socket`实例。 - **读取...

    C++Http上传文件到web服务器,解决中文参数乱码

    在C++中,进行HTTP文件上传到Web服务器时,可能会遇到中文参数乱码的问题。这是因为HTTP协议本身并不处理字符编码,而是依赖于上层的应用层协议(如HTTP头或者POST数据)来处理字符集。当涉及到非ASCII字符,如中文...

    VB6.0编写的简易WEB服务器

    3. **处理请求**:根据收到的HTTP请求,Web服务器需要解析请求行,确定请求类型(GET、POST等)、请求的资源路径以及HTTP版本。然后,它会在服务器的根目录下查找对应的文件,如HTML、CSS或JavaScript文件。 4. **...

    易语言简易WEB服务器

    5. **向客户返回数据**:当服务器处理完请求后,需要将结果数据返回给客户端。这包括HTTP响应状态码(如200表示成功,404表示未找到资源)以及响应体(如HTML页面、图片等)。在易语言简易WEB服务器源码中,这部分...

    C++进行http请求,并获取返回结果

    HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,用于从Web服务器传输超文本到本地浏览器。C++本身并不直接支持HTTP请求,但可以通过第三方库或者C++标准库中的套接字功能来实现。 本示例中,我们关注...

    httpclient 客户端发送xml报文到服务器端采用post方式(加密)传递

    本示例探讨的是如何使用HTTPClient库在客户端发送XML报文到服务器端,且报文通过POST方法传递,并可能涉及加密处理,确保数据的安全性。 首先,HTTPClient是Apache提供的一款强大的Java HTTP客户端API,它允许...

    一个基于HTTP的独立web服务器

    POST请求通常用于向服务器发送数据,如表单提交。第二个服务器代码版本(WebServer2)增加了对POST请求的处理,接收客户端发送的数据并进行相应操作。这需要解析请求主体,处理接收的数据,并可能更新服务器状态或...

    Http Server WEB服务器

    HTTP服务器是互联网上的一种核心组件,它负责接收HTTP(超文本传输协议)请求,并返回HTTP响应,从而在客户端(如浏览器)与服务器之间传递数据。本文将深入探讨"Http Server WEB服务器",以及如何实现GET和POST方法...

    Android客户端远程登录web服务器数据交换实例

    本文将深入探讨“Android客户端远程登录Web服务器数据交换实例”,讲解如何使用MySQL数据库、JSON数据传输以及Struts2、JavaBean和Servlet等技术。 首先,让我们了解一下MySQL数据库。MySQL是一款开源的关系型...

    计算机网络实验一 Windows环境下用java实现web服务器

    理解服务器如何处理请求和返回数据,有助于优化前端应用的性能和用户体验。通过这个实验,学生不仅能提升编程技能,还能增强问题解决能力和系统思维。 总的来说,"计算机网络实验一:Windows环境下用Java实现web...

    web服务器编程代码

    本项目中的"web服务器编程代码"是一个基于Java的简单Web服务器实现,主要由`HttpServer.java`、`Request.java`和`Response.java`三个部分组成,分别负责监听和处理请求、封装HTTP请求信息以及构建和发送HTTP响应。...

    用CURL来发送HTTP请求的方法

    它不仅支持客户端从服务器请求数据,也允许客户端向服务器发送数据。HTTP请求由客户端发起,包含一个方法(例如GET、POST或HEAD),一组请求头,以及可选的消息体。服务器则以状态行、响应头及响应体的形式作出响应...

    C#简单的web服务器

    7. **路由和中间件**:在更高级的Web服务器中,会涉及到路由(Route)的概念,用于将不同的URL映射到相应的处理函数。中间件(Middleware)则是在请求处理管道中执行的一系列逻辑,可以用于日志记录、身份验证等。 ...

    C#实现WEB服务器

    HTTP工作于客户端-服务端模型之上,客户端通过HTTP向服务器发送请求,服务器返回响应。常见的请求方法包括GET和POST。 - **GET**:请求获取由Request-URI所标识的信息。 - **POST**:在请求的URI所标识的资源后附加...

    VFP上传文件到web服务器

    首先,创建XMLHTTP对象,然后打开连接到服务器的请求,设置请求方法为POST,接着写入文件数据,并发送请求。最后,处理服务器返回的响应,确保文件成功上传。 4. XMLDOM: XMLDOM(XML Document Object Model)是...

Global site tag (gtag.js) - Google Analytics