1. import java.io.ByteArrayOutputStream;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.OutputStream;
  5. import java.io.UnsupportedEncodingException;
  6. import java.net.HttpURLConnection;
  7. import java.net.MalformedURLException;
  8. import java.net.URL;
  9. import java.net.URLEncoder;
  10. import java.util.HashMap;
  11. import java.util.Map;
  12.  
  13. import com.google.gson.Gson;
  14. /**
  15. * http格式的webservice主要工具类
  16. * @author Administrator
  17. *
  18. */
  19. public class HttpWebServiceUtils {
  20.  
  21. /*
  22. * params 填写的URL的参数 encode 字节编码
  23. */
  24. public static String sendPostMessage(Map<String, String> params,String encode,String path) {
  25. URL url = null;
  26. try {
  27. url = new URL(path);
  28. } catch (MalformedURLException e1) {
  29. e1.printStackTrace();
  30. return "";
  31. };
  32.  
  33. StringBuffer stringBuffer = new StringBuffer();
  34.  
  35. if (params != null && !params.isEmpty()) {
  36. for (Map.Entry<String, String> entry : params.entrySet()) {
  37. try {
  38. stringBuffer
  39. .append(entry.getKey())
  40. .append("=")
  41. .append(URLEncoder.encode(entry.getValue(), encode))
  42. .append("&");
  43. } catch (UnsupportedEncodingException e) {
  44. e.printStackTrace();
  45. return "";
  46. }
  47. }
  48. //删掉最后一个 & 字符
  49. stringBuffer.deleteCharAt(stringBuffer.length() - 1);
  50. System.out.println("传递的所有参数信息:" + stringBuffer.toString());
  51. HttpURLConnection httpURLConnection = null;
  52. try {
  53. httpURLConnection = (HttpURLConnection) url.openConnection();
  54. httpURLConnection.setConnectTimeout(3000);
  55. httpURLConnection.setDoInput(true);// 从服务器获取数据
  56. httpURLConnection.setDoOutput(true);// 向服务器写入数据
  57.  
  58. //获得上传信息的字节大小及长度
  59. byte[] mydata = stringBuffer.toString().getBytes();
  60. //设置请求体的类型
  61. httpURLConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
  62. httpURLConnection.setRequestProperty("Content-Lenth",String.valueOf(mydata.length));
  63.  
  64. //获得输出流,向服务器输出数据
  65. OutputStream outputStream = (OutputStream) httpURLConnection.getOutputStream();
  66. outputStream.write(mydata);
  67. outputStream.flush();// 强制把缓冲区的数据写入到文件并清空缓冲区
  68. outputStream.close();// 关闭连接
  69. //获得服务器响应的结果和状态码
  70. int responseCode = httpURLConnection.getResponseCode();
  71. if (responseCode == 200) {
  72. //获得输入流,从服务器端获得数据
  73. InputStream inputStream = (InputStream) httpURLConnection.getInputStream();
  74. return (changeInputStream(inputStream, encode));
  75. }
  76. } catch (IOException e) {
  77. e.printStackTrace();
  78. return "";
  79. } finally {
  80. if (httpURLConnection != null) {
  81. httpURLConnection.disconnect();
  82. }
  83. }
  84. }
  85. return "";
  86. }
  87.  
  88. /*
  89. *把从输入流InputStream按指定编码格式encode变成字符串String
  90. */
  91. public static String changeInputStream(InputStream inputStream,String encode) {
  92.  
  93. // ByteArrayOutputStream 一般叫做内存流
  94. ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
  95. byte[] data = new byte[1024];
  96. int len = 0;
  97. String result = "";
  98. if (inputStream != null) {
  99.  
  100. try {
  101. while ((len = inputStream.read(data)) != -1) {
  102. byteArrayOutputStream.write(data, 0, len);
  103. }
  104. result = new String(byteArrayOutputStream.toByteArray(), encode);
  105.  
  106. } catch (IOException e) {
  107. e.printStackTrace();
  108. }
  109. }
  110. return result;
  111. }
  112.  
  113. public static void main(String[] args) {
  114. //http://localhost:8088/online.video/account/account!httpAddAccount.do
  115. //?account.userId=123&account.password=2&account.name=2&account.sex=1&account.type=0&account.phone=2
  116. //params是请求的参数的map形式
  117. Map<String, String> params = new HashMap<String, String>();
  118. params.put("account.userId", "1234");
  119. params.put("account.password", "123");
  120. params.put("account.name", "张三");
  121. params.put("account.sex", "0");
  122. params.put("account.type", "0");
  123. params.put("account.phone", "13888888888");
  124. //发送请求,得到响应结果
  125. String result = HttpWebServiceUtils.sendPostMessage(params, "UTF-8",
  126. "http://localhost:8088/online.video/account/account!httpAddAccount.do");
  127. System.out.println(result);
  128. Gson gson = new Gson();
  129.  
  130. /*
  131. * 下面是对json格式的结果做json解析,用的是gson
  132. */
  133.  
  134. /*GsonResult gsonResult = gson.fromJson(result, GsonResult.class);
  135. System.out.println(gsonResult.getSuccess());*/
  136. }
  137. }

仿main方法的调用就可以了,接口方法就是在Controller里写一个这个请求的方法

http形式的webservice的更多相关文章

  1. day63-webservice 06.在web项目中发布以类的形式发布webservice

    真正用的时候都是需要部署在WEB服务器里面. 不能写主函数来发布了,需要借助于我们WEB. 4.配置web.xml, <!DOCTYPE web-app PUBLIC "-//Sun ...

  2. java 调用 wsdl形式的webservice 示例

    import java.rmi.RemoteException; import javax.xml.rpc.ParameterMode; import javax.xml.rpc.ServiceExc ...

  3. WebService:java配置类形式发布WebService接口及遇见的问题总结

    配置WebService前需要以下依赖jar包 #版本只供参考,具体看项目 <dependency> <grouId>org.apache.cxf</grouId> ...

  4. Java完成最简单的WebService创建及使用(REST方式,Jersey框架)

    前言: 一直以来都对WebService感兴趣,但因为难以理解WebService到底是什么,所以了解甚少.周二的时候有个跟我关系比较好的同事想要自己写个WebService的小Demo,希望能够做成 ...

  5. 分布式系列六: WebService简介

    WebSerice盛行的时代已经过去, 这里只是简单介绍下其基本概念, 并用JDK自带的API实现一个简单的服务. WebSerice的概念 WebService是一种跨平台和跨语言的远程调用(RPC ...

  6. IOS学习之路十八(通过 NSURLConnection 发送 HTTP 各种请求)

    你想通过 Http 协议向服务器发送一个 Get 的包装请求,并在这个请求中添加了一些请 求参数. 向远程服务器发送一个 GET 请求,然后解析返回的数据.通常一个 GET 请求是添加了 一些参数的, ...

  7. webservice-整理

    webservice-整理 RPC与WebService的区别:https://blog.csdn.net/defonds/article/details/71641634 http://www.di ...

  8. POST形式 soapUI调用WebService的restful接口,传入json参数,并且返回json

    第一次使用POST形式传JSON字符串,怎么都调不到后台方法,只是因为注解没加对…… CXF的WebService接口类 package com.zit.webservice.main; import ...

  9. 将一个类写成WebService服务的形式

    WebService是一种跨编程语言和跨操作系统平台的远程调用技术,主要解决不同语言写的应用程序之间.不同平台(linux/windows/andrid)之间的通信,即异构系统之间的通信. 常用的天气 ...

随机推荐

  1. SQL Server 索引结构及其使用(二)

    作者:freedk 一.深入浅出理解索引结构 改善SQL语句 很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解.比如: select ...

  2. EGit系列第二篇——关联远程仓库

    网上也有很多代码托管网站支持git,像最出名的GitHub,还有国内支持私有项目的OSC开源中国和CSDN等... 首先得注册个帐号,然后才可以创建仓库 一般都会带一个ReadMe.md,你可以勾选也 ...

  3. django进阶-查询(适合GET4以上人群阅读)

    前言: 下篇博客写关于bootstrap... 一.如何在脚本测试django from django.db import models class Blog(models.Model): name ...

  4. JSP中使用Spring注入的Bean时需要注意的地方

    遇到问题 遇到一个问题:在JSP中,使用Spring注入的Bean对象时,未能正确地获取到想要的对象. 郁闷的是,它也没报错. 研究问题 使用DEBUG功能(好久不在JSP里写Java代码了,都忘了J ...

  5. Elasticsearch学习之Java操作1

    1. Elasticsearch为Java用户提供了两种内置客户端 1.1 节点客户端(node client): 节点客户端以无数据节点(none data node)身份加入集群,换言之,它自己不 ...

  6. javascript解析器原理

    浏览器在读取HTML文件的时候,只有当遇到<script>标签的时候,才会唤醒所谓的“JavaScript解析器”开始工作. JavaScript解析器工作步骤 1. “找一些东西”: v ...

  7. 报错--"npm audit fix" or "npm audit"

    如图: 根据提示输入 npm audit fix --force 如图: 根据提示输入: npm audit

  8. vue Element动态设置el-menu导航当前选中项

    1,npm install vuex --save 2,在src下新建vuex文件夹,新建store.js文件: store.js import Vue from 'vue' import Vuex ...

  9. 2-3 vue配置介绍

    一.通过vue-cli构建的项目的文件介绍 1.bulid文件夹 ==> 项目打包的配置文件夹 2.config文件夹 ==> 打包的配置 3.src文件夹 ==> 项目开发的源码 ...

  10. 【CF618G】Combining Slimes 概率+矩阵乘法

    [CF618G]Combining Slimes 题意:一个长度为$1\times n$的网格,每次从最右侧往里推入一个数字1或2(数字会一直跑到最左边的空格子里),加入1的概率为p,2的概率为1-p ...