使用URL工具类调用webservice接口(soap)与http接口的实现方式
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class SoapTest {
public void testPost(String urlStr,String data) {
try {
//创建指定链接的url对象
URL url = new URL(urlStr);
//建立到url对象之间的链接
HttpURLConnection con = (HttpURLConnection) url.openConnection();
//如果打算使用 URL 连接进行输出,则将 DoOutput 标志设置为 true
con.setDoOutput(true);
//设置第一次请求的数据内容不被存储
con.setRequestProperty("Pragma:", "no-cache");
//设置请求的数据内容不被存储
con.setRequestProperty("Cache-Control", "no-cache");
//设置请求的字符集编码格式,如果不指定,则默认采用16进制的字符集编码格式
con.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");
//构造向指定链接写入数据的的输出流
OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream());
//获取xml数据
String xmlInfo = getXmlInfo(data);
//向指定链接写入数据
out.write(new String(xmlInfo));
out.flush();
out.close();
//将从服务端返回的数据读取到内存中
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
String line = "";
//构造一个空的StringBuffer对象,用于存储内存中的数据
StringBuffer buf = new StringBuffer();
for (line = br.readLine(); line != null; line = br.readLine()) {
//由于服务端返回的数据的字符集编码有可能不是utf-8,需要对返回的数据通过指定的字符集进行解码
buf.append(new String(line.getBytes(),"UTF-8"));
}
//获取服务端返回的HttpCode
int httpCode = con.getResponseCode();
System.out.println("HttpCode:"+httpCode+" "+map.get("msgType")+"接口:"+buf.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//处理xml数据
public static String getXmlInfo(String data){
//对webservice接口进行加密(SHA-1加密)
SoapKey soapKey = new SoapKey();
String key=soapKey.getMessageDigest(data, "SHA-1");
//处理传输数据的"<"与">"字符
String str = new String(data.replace("<","<")).replace(">",">");
String xml = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ser=\"http://service.ws.gpo.yy.com/\">"+"<soapenv:Header/>"
+"<soapenv:Body><ser:sendRecv4Supplier><!--Optional:--><sUser>zhuwei</sUser><!--Optional:--><sPwd>password</sPwd><!--Optional:--><sJgbm>GYSNB001</sJgbm><!--Optional:--><sVersion>1.0.0.0</sVersion><!--Optional:--><sXxlx>GS102</sXxlx><!--Optional:--><sSign>"+key+"</sSign><!--Optional:-->"
+"<xmlData>"+str+"</xmlData>"
+"</ser:sendRecv4Supplier></soapenv:Body></soapenv:Envelope>";
return xml;
}
public static void main(String[] args) throws UnsupportedEncodingException {
String url = "http://192.168.1.208:8090/gpodec/webservice/supplierService";
new SoapTest().testPost(url);
}
}
使用URL工具类调用webservice接口(soap)与http接口的实现方式的更多相关文章
- UrlUtils工具类,Java URL工具类,Java URL链接工具类
UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...
- URL工具类
UrlUtils = { /** * 判断url是否存在(存在跨域问题) * @param {String} url */ isTrueUrl: function(_url) { result = f ...
- .Net Excel 导出图表Demo(柱状图,多标签页) .net工具类 分享一个简单的随机分红包的实现方式
.Net Excel 导出图表Demo(柱状图,多标签页) 1 使用插件名称Epplus,多个Sheet页数据应用,Demo为柱状图(Epplus支持多种图表) 2 Epplus 的安装和引用 新建一 ...
- Java使用OkHttps工具类调用外部接口
前言 现在公司业务已止不是传统的增删改查等简单的业务处理操作,而是对数据各种联调三方接口与其他系统进行交互等,那么就需要我们在后台java中进行外部接口的调用,本文采用OkHttps工具类对接微信接口 ...
- android 使用Ksoap2工具类实现WebService网络编程
1.下载Ksoap2,将jar包拷贝到libs目录下.然后右键点击拷贝进来的jar,在弹出菜单中点击Add As Library. 2.在AndroidManifest.xml中添加访问网络的权限 & ...
- Java工具类之——BigDecimal运算封装(包含金额的计算方式)
日常对于金额计算,应该都是用的BigDecimal, 可是苦于没有好的工具类方法,现在贡献一个我正在用的对于数字计算的工具类,项目中就是用的这个,简单粗暴好用,话不多说,代码奉上(该工具类需要引入g ...
- 使用HttpClient工具类测试WebService接口(soap)
import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStream;import jav ...
- ssh框架,工具类调用service层方法
解决方法: @Component//声明为spring组件 public class CopyFileUtil{ @Autowired private DataFileManager dataFile ...
- PHP调用webservice遇到 Soap WSDL Error - "failed to load external entity
本人遇到的原因是服务器上没有安装php-soap centos安装方式: yum install php-soap 安装完成后重启 php-fpm 服务 service php-fpm restart ...
随机推荐
- JavaScript基础知识复习
1,javascript是基于对象和事件驱动的,并有安全性能的脚本语言: 2,javascript的特点: 1)向HTML中添加交互事件: 2)脚本语言,与java语法类似: 3)解释性语言,边执行边 ...
- Arch声卡配置
ALSA Utilities Install the alsa-utils package. This contains (among other utilities) the alsamixer a ...
- Block使用中的一些要注意的地方
本文主要是阐述一下Block中如何的使用外部变量以及block本身的内存管理. 先定义一个block变量,作为后续的例子中使用: typedef void(^BlockCC)(void); Block ...
- mysql sql语句大全(转载)
1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 ...
- C# 二维数组和集合
本次课我主要学习了二维数组和集合的部分内容. 在二维数组的部分中,我主要学习了二维数组的定义方法:int [,] array=new int [4,2];做了一个小练习:用二维数组打印自己的姓氏. s ...
- 引用WCF地址报下载“https://xxx:8004/TerminalHandler.svc?disco”时出错问题
服务发布了wcf服务后,在客户端引用发现出现以下错误 - 来自“DISCO 文档”的报告是“下载“https://servername:8004/TerminalHandler.svc?disco”时 ...
- dedecms 自定义标签的方法
function lib_demotest(&$ctag,&$refObj) { global $dsql,$envs; //属性处理 $attlist="row|12,ti ...
- 《JavaScript高级程序设计》读书笔记 ---if语句
if语句 大多数编程语言中最为常用的一个语句就是if 语句.以下是if 语句的语法:if (condition) statement1 else statement2其中的condition(条件)可 ...
- File文件操作类
public class FileTest { //遍历出E:根目录下所有的文件夹,并输出文件夹名 static void testOne(){ //构建File对象,设置文件路径 File ro ...
- mybatis---------insert,delete ,update的批量操作
在数据量大的情况下,可以使用批量 提高性能 批量插入insert 方法一: <insert id="insertbatch" parameterType="java ...