`
backbase
  • 浏览: 88769 次
  • 性别: 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

分享到:
评论

相关推荐

    基于Labview的HTTP的GET与POST请求示例

    超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的...在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。 GET - 从指定的资源请求数据。 POST - 向指定的资源提交要被处理的数据

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

    1. 简述HTTP协议的内容,包含请求协议和返回协议。 2. 验证简单WEB服务器的实现原理,分析主要的代码实现,并总结WEB服务器处理客户端请求的全过程。

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

    采用httpclient发送xml报文,httpServer接收报文。两个程序一看就明白可以直接调用执行不在多说。

    基于HTTP代理服务器的实现的毕业设计,Socket编程技术,借助第三方库实现HTTP协议的解析和封装,使用多线程技术实现并发

    3. 建立Socket连接,向Web服务器发送HTTP请求。 4. 接收Web服务器的响应报文,解析并封装为HTTP响应报文。 5. 将HTTP响应报文返回给客户端。 此外,为提高网络性能,我们还将实现Web缓存功能。具体实现包括: 1

    基于WEB的简易服务器的搭建设计毕业论文

    页面访问请求响应、HTML文件的解析以及数据发送。所以在完成设计之前,必须先了解 WEB服务器设计的原理与结构。 一般来说,Web 服务器通常由以下几个部分组成:(1)服务器初始化部分.这部分主要 完成 Web 服务器的...

    Fiddler+Web+Debugger(FD)汉化版

    它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。  既然是代理,...

    C++实现POST请求

    如何用C++实现http post 请求 , 如何获取WEB服务器数据,如果处理数据,如何向WEB服务器返回数据等。

    MVC WebApi 用户权限验证及授权DEMO

    2) 浏览器解析Http请求,发送到Web服务器;Web服务器验证用户请求,首先判断是否有登录的票据信息; 3) 用户没有登录票据信息,则跳转到登录页面; 4) 用户输入用户名和密码信息; 5) 浏览器提交登录表单数据给...

    python实现静态web服务器

    1:浏览器首先向服务器发送HTTP请求,请求包括: 方法:GET还是POST,GET仅请求资源,POST会附带用户数据; 路径:/full/url/path; 域名:由Host头指定:Host: www.sina.com以及其他相关的Header; 如果是POST,...

    VC通过HttpGet和HttpPost方式与WebService通信,解析返回的Json

    MFC程序中通过HttpGet和HttpPost方式向WebService发送请求,WebService以Json的方式返回数据,MFC程序解析Json,得到指定数据。

    运维-Nginx代理服务器-方向代理-负载均衡-数据缓存

    简单来说,就是把多条客户端的请求传给Nginx反向代理服务器,Nginx在把这些请求分别发送而给多个Web服务器,来减少直接对一个Web服务器造成的压力。 缓存数据:数据缓存是客户端第一次访问服务器的时候,nginx会把从...

    Delphi中idHttp和HttpServer当客户端与服务器作数据传输的实例

    idHttpServer不作Web容器使用,而是当服务器监听来自idHttp的数据,运行两个实例中的程序,就可以相互发送文字信息或文件了,希望对新手有帮助!

    jsp网页之间共享数据

    服务器的请求,服务器接收到客户端的请求,根据客户端的请求进行处理,把处理后的结果 返回给客户端。在这个过程中,使用的是 HTTP协议,是无状态的请求应答模式,也就是说 在多次请求之间不会保存状态信息,用户...

    fiddle安装配置及抓取web和手机请求包方法V1.0.doc

    fiddle安装配置及抓取web和...它能够记录客户端和服务器之间的所有 请求,可以针对特定的请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。

    基于Python+MySQL实现(Web)中医藏象辨证量化诊断系统【100010952】

    Web 交互模块,即负责与用户进行交互,同时协调后端组件进行工作,系统基于 Python 强大的 Django 框架进行开发,采用 MVC 的软件设计模式,控制器负责接受处理用户输入请求,指示响应操作,模型负责与数据库以及...

    【JavaScript源代码】node中http模块的使用及执行流程.docx

    方法创建一个web服务器 返回一个server实例 const server = http.createServer() 3.提供对数据的服务 发请求 接受请求 处理请求 返回(发送响应) 注册request请求事件,当客户端请求过来就会自动触发request请求...

    fiddler4抓包工具

    它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。 既然是代理,也...

    Java中Socket通信-客户端与服务端相互传输对象数据示例代码.rar

    socket 的典型应用就是 Web 服务器和浏览器:浏览器获取用户输入的 URL,向服务器发起请求,服务器分析接收到的 URL,将对应的网页内容返回给浏览器,浏览器再经过解析和渲染,就将文字、图片、视频等元素呈现给用户...

    Servlet详解与应用.pptx.pptx

    Servlet是运行在服务器端的Java程序,能够接收和响应客户端的请求,主要用于处理客户端与服务器之间的数据交互。 Servlet的功能 Servlet具有处理客户端请求、生成动态内容、访问数据库、发送电子邮件等功能,它是...

Global site tag (gtag.js) - Google Analytics