`
pingwei000
  • 浏览: 59206 次
  • 性别: 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();
    }
  }
分享到:
评论

相关推荐

    通过自定义串口通信协议实现STM32采集的图像发送到上位机查看

    通过自定义串口通信协议实现STM32采集的图像发送到上位机查看 开发平台: VS2019, Keil 5 开发技术: C#, WinForm, C++ 使用到的技术: STM32, SerialPort, Winform 需要提前指定要发送的图像大小, 否则会出现解析...

    基于存储过程和HTTP协议的消息主动推送系统实现.pdf

    数据库中的存储过程和触发器多用于数据完整性检测和复杂规则约束,其提供了一个当数据表数据发生变更后的主动操作机制,Oracle 数据库还提供了UTL_HTTP 包来实现数据库对外部WEB 服务器的主动访问。利用这两个特性,...

    STM32F4+LWIP+HTTP client(TCP client) +DHCP +DNS

    1.在stm32使用lwip协议栈实现http client,完成向客户端定时发送数据 2.实现DNS域名解析操作 3.实现通过DHCP获取DNS服务器地址,可以通过此地址进行域名解析 4.使用MDK5.20编译

    wpf+HTTP_POST

    利用http协议监听URL,接收对方POST json数据,测试方法:postman 发送post请求,程序接收并显示,操作方法见资源内png。

    RTSP 协议 规范 pdf

    实时流协议(RTSP)是应用级协议,控制实时数据的发送。RTSP提供了一个可扩展框架,使实时数据,如音频与视频,的受控、点播成为可能。数据源包括现场数据与存储在剪辑中数据。该协议目的在于控制多个数据发送连接...

    TCP/IP协议与网络编程技术

    第6章:简要的介绍了一下TCP/IP协议在Windows和LINUX操作系统下的实现原理TCP/IP协议的二进制代码。 下篇包含以下6章内容: 第7章:介绍了网络程序设计有关的基础知识、一个网络程序入门实例和Winsock中编写网络程序...

    iscsi协议及实现

    将STML发来的命令数据封装成底层通讯协议数据包的格式发送到网络上或者将从网络接受到的数据包解包传递给STML 将STML和FETD分开的原因 增强程序的可重用性 STML是通用的 FETD是和底层采用的通讯协议(TCP/IP、Fibre ...

    一个c#开发的dns协议解析包 可以生成查询请求,接收返回的数据.rar

    网络中,网站的IP地址很难让人去记住,一般都是使用域名去访问,因此就有了DNS服务器,根据IP...发送这个过程并不是解析器来执行的,而是委托给了操作系统内部的协议栈去做处理,协议栈通过网卡将消息发送给DNS服务器。

    PassiveDataSorting:自动化被动扫描系统分为数据源,数据处理,扩展验证等三个变量,本系统属于数据处理部分,抓取流量分配的数据,进行分析过滤去重等操作,发送至消息数值中,等待PassiveSecCheck消费

    自动化被动扫描系统分为数据源,数据处理,扩展验证等三个变量,本系统属于数据处理部分,抓取流量分配的数据,进行分析过滤去重等操作,发送至消息数值中,等待PassiveSecCheck消费 作者 咚咚呛 如有其他建议,可...

    WindowsServer2003-KB2868626-x86-CHS

    从发送端看,这一层负责把http的内容加密后送到下层的TCP,从接收方看,这一层负责将TCP送来的数据解密还原成http的内容。 在windows 2003操作系统下,IIS 6 环境的服务器SSL证书安装教程。安装前,请准备好SSL证书...

    基于winpcap发送数据包

    标 题: 【原创】基于WinPCap的网络协议开发 - 炮王(超级打炮机)发送数据包(03) 作 者: 加百力 时 间: 2009-05-18,16:55:36 链 接: http://bbs.pediy.com/showthread.php?t=89175 【文章标题】: 基于WinPCap的...

    Python中使用socket发送HTTP请求数据接收不完整问题解决方法

    当然,这样的话,需要对HTTP协议比较熟悉,HTTP协议这里就不做讲解了。整个python的代码如下: #!/usr/bin env python import socket host=www.baidu.com se=socket.socket(socket.AF_INET,socket.SOCK_STREAM) se....

    跟姐姐学JSP —— JSP系统清晰的初级教程

    2.找到了服务器的位置,浏览器会向服务器发送一个请求(request),这个请求包含着http协议规定格式的数据,现在咱们不需要去计较细节,先把注意力集中在流程上。 3.接下来,服务器接收请求,分析请求中包含的数据...

    19.Agent模块发送请求.zip

    HTTP协议和URL的基本知识 Python爬虫库的介绍 数据抓取与解析 HTML解析与XPath、CSS选择器的应用 JSON和XML数据的解析 动态网页爬取技术(如使用Selenium等) 反爬机制与应对策略 反爬机制的类型和常见手段 User-...

    socket通信与串口通信(二选择一)

    由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配...

    http远程控制台

    基于http协议的远程操作一般会由客户端通过浏览器发送http请求给http服务端;服务端根据URL传来的参数,转换为指令执行不同的处理逻辑,然后把执行结果用页面的形式或者某种数据封装返回给客户端,这样的处理是比较...

    python全栈开发基础+前端+web框架+项目实战视频.zip

    通过form向后端发送数据 文件上传 elect标签 41-python 全栈开发-前端篇 html回顾 http协议之请求协议 http协议之响应协议1 http协议之响应协议2 css的四种引入方式 css的基本选择器 css的属性选择器和伪类 css的...

    国家标准osi模型与组建

    主机正是利用这个协议栈来接收和发送数据的。OSI参考模型通过将协议栈划分为不同的层次,可以简化问题的分析、处理过程以及网络系统设计的复杂性。OSI参考模型的提出是为了解决不同厂商、不同结构的网络产品之间互连...

    黎活明android教程的全程PPT

    第五天 1> 网络--通过HTTP协议发送XML数据,并调用webservice实现手机号归属地查询 2> 网络--通过HTTP协议实现多线程断点续传下载 3> 为应用添加新的Activity与参数传递 4> 意图 第六天 1> Activity的生命周期 ...

    传智播客Android视频教程-课程源码.rar

    第五天 1> 网络--通过HTTP协议发送XML数据,并调用webservice实现手机号归属地查询 2> 网络--通过HTTP协议实现多线程断点续传下载 3> 为应用添加新的Activity与参数传递 4> 意图 第六天 1> Activity的生命周期 2> ...

Global site tag (gtag.js) - Google Analytics