`
pingwei000
  • 浏览: 61778 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

操作HTTP协议发送数据

阅读更多
客户端部分代码:
public String requestV8Api(String params, String mothodName)
    {
        String result = null;
        String errcode = "";
        HttpURLConnection conn = null;
        String apiUrl = (new             StringBuilder(String.valueOf(Configuration.getString("apiURL")))).append("/v8ApiServer").append("/v8ApiServer").toString();
        URL url = ApiUtil.getUrl(apiUrl);
        try
        {
            conn = (HttpURLConnection)url.openConnection();
            conn.setConnectTimeout(1000000);
            conn.setReadTimeout(1000000);
           conn.setDoOutput(true);
           /**如果打算使用 URL 连接进行输出,则将 DoOutput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 false。**/
           conn.setDoInput(true);
           /**如果打算使用 URL 连接进行输入,则将 DoInput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 true。**/
/**在请求的header中写入信息 start**/
            conn.setRequestMethod("POST");
            conn.setRequestProperty("mothodName", mothodName);
            conn.setRequestProperty("Content-type", "application/octest-stream");
            conn.setRequestProperty("apiversion", "1.0");
            String publickey = Configuration.getString("publickey");
            conn.setRequestProperty("publickey", publickey);
            conn.setRequestProperty("privatekey", "v8Online");
            String appid = Configuration.getString("appid");
            conn.setRequestProperty("appid", appid);
/**在请求的header中写入信息 end**/

            OutputStream out = conn.getOutputStream();
            /**返回写入到此连接的输出流**/
            ObjectOutputStream objStream = new ObjectOutputStream(out);
            objStream.writeObject(params);
           /**用于往请求中写入数据发送给服务器端,服务器端通过getInputStream().readObject()方法得到客户端输入的数据流*/
            objStream.flush();
            objStream.close();
            out.close();
            conn.getOutputStream().flush();
            conn.getOutputStream().close();
          
            InputStream in = conn.getInputStream();
           /**返回从此打开的连接读取的输入流**/
            int responseCode = conn.getResponseCode();
            if(200 != responseCode)
            {
                errcode = "4";
                System.out.print((new StringBuilder("\u670D\u52A1\u5668 HTTP     \u72B6\u6001\u7801\uFF1A")).append(responseCode).toString());
                result = (new StringBuilder("result:{errcode:")).append(errcode).append("}").toString();
            }
            ObjectInputStream back = new ObjectInputStream(in);
            result = (String)back.readObject();
           /**用于从读取服务器端通过getOutputStream().writeObject()方法写入response中的数据流**/
            back.close();
            in.close();
        }
        catch(IOException e)
        {
            errcode = "1";
            result = (new StringBuilder("result:{errcode:")).append(errcode).append("}").toString();
        }
        catch(ClassNotFoundException e)
        {
            errcode = "1";
            result = (new StringBuilder("result:{errcode:")).append(errcode).append("}").toString();
        }
        return result;
    }


服务器端部分代码:
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException
  {
    ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(req.getInputStream()));
   /**用于从获得从客户端通过getOutputStream().writeObject()方法写入的数据流**/

    Log log = LogFactory.getLog(getClass());
    String result = null;
    try
    {
      String params = (String)in.readObject();
   /**用于从获得从客户端通过getOutputStream().writeObject()方法写入的数据流**/
      System.out.println(params);
      CallMothodController controller = new CallMothodController();
      Map paramsMap = controller.params(params);

      SYSParamBean bean = new SYSParamBean();
      bean.setApi_version(req.getHeader("apiversion"));
      bean.setApp_id(req.getHeader("appid"));
      bean.setMothodName(req.getHeader("mothodName"));

      log(req.getHeader("mothodName"));
      bean.setPrivate_key(req.getHeader("privatekey"));
      bean.setPublic_key(req.getHeader("publickey"));

      String errCode = controller.checkJurisdiction(bean);
      if ("".equals(errCode)) {
        result = controller.getMothodObject(bean.getMothodName(), paramsMap);
        in.close();

        out = new ObjectOutputStream(resp.getOutputStream());
        out.flush();

        out.writeObject("result:{content:" + result + ",errcode:[]" + "}");
        out.close(); return;
      }
      in.close();

      ObjectOutputStream out = new ObjectOutputStream(resp.getOutputStream());
       /**打开response的输出流**/
      out.flush();

      out.writeObject("result:{errcode:" + errCode + "}");
      /**向响应response中写入数据**/
      out.close();
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }
分享到:
评论

相关推荐

    串口数据转换成http协议数据发送到云端

    本文将深入探讨如何将串口数据转换为HTTP协议数据,并将其发送到云端,以及源码软件的跨平台特性。 串口通信,也称为UART(通用异步收发传输器),是一种常见于嵌入式系统、单片机和计算机中的接口,用于设备间的...

    基于STM32F103单片机,配合HTTP协议上传数据到服务器

    【基于STM32F103单片机,配合HTTP协议上传数据到服务器】的知识点主要涵盖以下几个方面: 1. **STM32F103单片机**:STM32是意法半导体(STMicroelectronics)推出的一种基于ARM Cortex-M3内核的微控制器系列。STM32...

    wfeth http协议发送工具

    总的来说,WFETH HTTP协议发送工具是一个强大且实用的工具,它提供了对HTTP协议的精细控制,使得用户能够在各种网络场景下进行灵活的测试和操作。了解并熟练掌握这类工具,对于提升网络开发和运维的专业技能至关重要...

    STM32+移远BC35NBlot coap协议发送数据

    在STM32上实现CoAP协议发送数据,首先需要对STM32的串行通信接口进行配置,通常是USART或UART,以便与BC35-NB模组进行AT命令交互。AT命令是控制无线调制解调器的标准命令集,用于设置参数、建立连接、发送数据等操作...

    移植cJSON库,使用tcp协议制作http-json客户端发送js字段源码

    3. 构建HTTP请求:根据HTTP协议规范,构造一个包含方法(GET或POST)、URL、HTTP版本、头部和可选的请求体的HTTP请求。对于JSON数据,通常使用POST方法,将JSON数据作为请求体发送。 4. 序列化JSON数据:使用cJSON...

    C# http post协议,数据交互形式为json

    在IT行业中,网络通信是应用程序之间进行数据交换的关键部分,而HTTP(超文本传输协议)则是互联网上应用最广泛的一种网络协议。C#作为一种强大的编程语言,提供了丰富的库和工具来支持HTTP通信,特别是对于POST请求...

    stm32 sim800c定位http协议发送定位信息给服务器.7z

    STM32与SIM800C模块的整合是嵌入式系统中常见的一种通信...通过HTTP协议发送定位信息,使得数据能够实时上传到云端,为物联网应用提供了便利。理解并掌握这种技术,对于深入理解嵌入式系统和物联网架构有着重要的意义。

    HTTP协议和数据网络

    总结起来,HTTP协议是互联网上数据交换的基础,而数据网络则是这一切得以实现的物理和逻辑架构。理解这两者的工作原理对于网络开发和运维人员至关重要。通过深入学习和实践,我们可以更好地优化网络性能,解决网络...

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

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

    c#向指定端口发送数据,监听指定端口

    C#作为一种强大的编程语言,提供了丰富的类库来实现网络通信功能,如监听指定端口和向特定端口发送数据。这里我们将深入探讨如何利用C#进行UDP和TCP通信。 首先,让我们了解基本概念: 1. **监听(Listening)**:...

    客户端应用程序,建立关闭与服务器的连接,向服务器发送数据,接收数据

    在HTTP协议中,客户端通过POST或GET方法发送数据,POST用于提交表单数据,GET则用于获取资源。 三、接收数据 服务器处理完客户端的请求后,会返回相应的数据给客户端。这可能是网页内容、文件、数据库结果或其他...

    IOS网络编程之HTTP协议

    为了在iOS开发中利用HTTP协议发送网络请求,开发者可以使用一些常用的网络框架,例如Alamofire或者URLSession。这些框架封装了HTTP请求的复杂性,提供了简洁的API来发送GET、POST等类型的请求,并处理响应数据。 ...

    HTTP协议详解_HTTP协议_

    这个协议是基于请求与响应模型的,允许用户代理(如浏览器)向Web服务器发送请求,并接收服务器返回的数据。 HTTP协议的工作原理: 1. 请求过程:当用户在浏览器中输入URL并按下回车键时,浏览器作为客户端(Client...

    C++实现http的post发送接收数据以及xml解

    - **发送数据**: 使用`HttpSendRequest()`函数发送POST数据,这里的数据通常是URL编码后的字符串。 - **接收响应**: 通过`InternetReadFile()`函数读取服务器返回的响应,直到没有更多数据为止。 2. **XML解析**...

    HJ212-2017协议C语言实现,支持协议组包.zip

    4. 网络通信:C语言中可以使用socket编程接口来实现TCP/IP或HTTP协议,处理连接建立、数据发送和接收、断开连接等操作。 5. 错误处理:在实现过程中,应充分考虑各种异常情况,如网络中断、数据解析错误等,并提供...

    HTTP协议详解电子书

    HTTP协议是基于TCP/IP通信协议来传输数据的,主要负责客户端(浏览器)与服务器之间的通信。在Web开发和网络编程中,对HTTP协议的理解和运用至关重要。 HTTP协议采用了请求/响应模型。在这个模型中,客户端(通常是...

    ios向指定端口发送数据,监听指定端口

    3. **发送数据**:当连接成功后,可以调用`writeData:withTimeout:tag:`方法发送数据。数据通常以NSData对象的形式提供,标签用于识别不同的数据包。 监听指定端口: 1. **创建服务器Socket**:在iOS设备上,你...

    HTTP协议观察工具

    HTTP协议以明文方式发送内容,不提供任何方式的数据加密,因此存在安全性问题。 HTTP协议观察工具的主要功能包括: 1. 请求和响应捕获:工具可以捕获浏览器或应用程序发出的所有HTTP请求和服务器返回的响应,包括...

    mysql-WINDOWS--SERVICES.zip_HTTP_HTTP协议_MYSQL_数据采集_采集

    综上所述,使用HTTP协议进行数据采集并存储到MySQL数据库中,涉及的知识点包括HTTP协议的工作原理、数据采集的方法、MySQL数据库的管理与操作、Windows服务程序的配置,以及数据处理和存储的最佳实践。理解并掌握...

    Http协议操作DB

    POST请求常用于向服务器发送数据,例如表单提交,非常适合用于数据库写入操作。POST请求的数据包含在请求体中,因此可以处理大量数据,而不像GET请求那样受到URL长度限制。 2. **HTTP请求结构**: - 一个HTTP请求...

Global site tag (gtag.js) - Google Analytics