java调用webservicejava调用别人写好的webservice接口,在线等
java调用webservice 时间:2021-06-02 阅读:(
)
java中如何调用webservice接口来取得数据 Java调用WebService可以直接使用Apache提供的axis.jar自己编写代码,或者利用Eclipse自动生成WebService Client代码,利用其中的Proxy类进行调用。 理论上是一样的,只不过用Eclipse自动生成代码省事些。
1、编写代码方式:
.yudun.test;
import java.rmi.RemoteException;
.apache.axis.client.Call;
.apache.axis.client.Service;
.apache.axis.message.PrefixedQName;
.apache.axis.message.SOAPHeaderElement;
.cezanne.golden.user.Exception;
.cezanne.golden.user.UserManagerServiceProxy;
import javax.xml.namespace.QName;
import .MalformedURLException;
import javax.xml.rpc.ServiceException;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPException;
public class testWebService {
public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException
{
//标识Web Service的具体路径
String endpoint = "WebService服务地址";
// 创建 Service实例
Service service = new Service();
// 通过Service实例创建Call的实例
Call call = (Call) service.createCall();
//将Web Service的服务路径加入到call实例之中.
call.setTargetEndpointAddress( new .URL(endpoint) );//为Call设置服务的位置
// 由于需要认证,故需要设置调用的SOAP头信息。
Name headerName = new PrefixedQName( new QName("发布的wsdl里的targetNamespace里的url", "string_itemName") );
.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName);
header.addTextNode( "blablabla" );
call.addHeader(header);
// SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("发布的wsdl里的targetNamespace里的url", "SoapHeader");
// soapHeaderElement.setNamespaceURI("发布的wsdl里的targetNamespace里的url");
// try
// {
// soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");
// }
// catch (SOAPException e)
// {
// e.printStackTrace();
// }
// call.addHeader(soapHeaderElement);
//调用Web Service的方法
.apache.axis.description.OperationDesc oper;
.apache.axis.description.ParameterDesc param;
oper = .apache.axis.description.OperationDesc();
oper.setName("opName");
param = .apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg0"),.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = .apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg1"),.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);
param = .apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg2"),.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("", "string"), java.lang.String.class, false, false);
param.setOmittable(true);
oper.addParameter(param);java调用webservice接口具体怎么调用啊?有没有简单点的 最简单的就是直接弄一个URL类。 通过buffer得到结果。
URL?tmp?=?new?URL(url);
URLConnection?connection?=?tmp.openConnection();??
connection.connect();?
BufferedReader?reader?=?new?BufferedReader(new?InputStreamReader(connection.getInputStream()));
String?line;?
while((line?=?reader.readLine())!=?null){??
????result?+=?line;??
????result?+=?"
";??
}
//result就是了关于Webservice接口的Java客户端调用 String endpoint="http://localhost:8080/xxx/services/userservice?wsdl";
String id = "11111";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new URL(endpoint));
call.setOperationName("webservice方法名");
String res = (String) call.invoke(new Object[] {id});
看了你的描述觉得你把webservice想得太复杂化了,其实就是一个jar包和几个类。
以上就是最简单的webservice客户端用法,和反射有点像。 当然返回值不一定是String,返回的类型和格式要问服务提供方。
我用的是axis的,我不了解websphere什么的,但是webservice就是那么易用的东西。用Java调用webservice,并解析返回值,大神们 求助 你是哪个公司?我在上班,我不能上QQ,我给你贴代码,有问题你追问我!
private void 方法名(String storecd) {
// 传递参数
param.clear();
param.put("webservice的输入值的名字,(必须完全一样)", 参数);
//连接web service
openRequest(getString(R.string.EXSERVER_SCRAP_GetShipName), param,
essMode.Asynchronous, essHandler);
}
//数据处理
private essHandler essHandler = new essHandler(
this) {
@Override
//数据异常处理
public void onExceptionHandler(PacerURLRequest request, String errMessage){
currentDialog=showAlertDialog_OK(getString(R.string.MESSAGE_CODE_08),
getString(R.string.MSG_COMMON_OK),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
}
//处理获取的数据
public void onDataReadyHandler(PacerURLRequest request) {
try {
essBundle bundle = request.getBundle();
if (getString(R.string.EXSERVER_SCRAP_GetShipName).equals(request.getResource())) {
ArrayList table0 = bundle.getTable("Table0");
ScrapScan_Table0_GetShipName prod = (ScrapScan_Table0_GetShipName) table0.get(0);
shopname.setText(prod.getPlc_nm());
}
} catch (Exception e) {
showAlertDialog_OK("店铺号不存在,请输入正确的店铺号!",
getString(R.string.MSG_COMMON_OK), null);
e.printStackTrace();
}
}
@Override
//错误数据处理
public void onDataErrorHandler(PacerURLRequest request) {
}
};一个java写的webservice如何调用另一个java web项目中的类啊,类似于引用的那种 调用另一个项目中的类只能用RMI或者EJB等。
另外我觉得你是想实现类似SOA的架构,那个被调用的java web项目也应该写webservice接口,只对内网发布,然后用来发布外网的那个项目姑且叫做frontend,起到一个代理的作用。 但这样做有点画蛇添足了。java调用别人写好的webservice接口,在线等 url = new URL(url)
httpurlconnection = (HttpURLConnection) url.openConnection();
httpurlconnection.setDoOutput(true);
httpurlconnection.setRequestMethod("POST");
httpurlconnection.connect();
httpurlconnection.getOutputStream().write(param.getBytes("GBK"));
httpurlconnection.getOutputStream().flush();
httpurlconnection.getOutputStream().close();
in = httpurlconnection.getInputStream();
if (in == null) {
log.info("========调用HTTP接口出错=======");
throw new Exception("调用HTTP接口出错 ");
}
BufferedReader breader = new BufferedReader(new InputStreamReader(
in, "GBK"));
String str = breader.readLine();
String returnStr = null;
while (str != null) {
if (returnStr == null) {
returnStr = str;
} else {
returnStr += str;
}
str = breader.readLine();
if (str == null) {
break;
}
大概这个样子
TNAHosting是一家成立于2012年的国外主机商,提供VPS主机及独立服务器租用等业务,其中VPS主机基于OpenVZ和KVM架构,数据中心在美国芝加哥机房。目前,商家在LET推出芝加哥机房大硬盘高配VPS套餐,再次刷新了价格底线,基于OpenVZ架构,12GB内存,500GB大硬盘,支持月付仅5美元起。下面列出这款VPS主机配置信息。CPU:4 cores内存:12GB硬盘:500GB月流...
iON Cloud怎么样?iON Cloud升级了新加坡CN2 VPS的带宽和流量最低配的原先带宽5M现在升级为10M,流量也从原先的150G升级为250G。注意,流量也仅计算出站方向。iON Cloud是Krypt旗下的云服务器品牌,成立于2019年,是美国老牌机房(1998~)krypt旗下的VPS云服务器品牌,主打国外VPS云服务器业务,均采用KVM架构,整体性能配置较高,云服务器产品质量靠...
racknerd怎么样?racknerd商家最近促销三款美国便宜vps,最低只需要9.49美元,可以选择美国圣何塞、西雅图、纽约和芝加哥机房。RackNerd是一家成立于2019年的美国高性价比服务器商家,主要从事美国和荷兰数据中心的便宜vps、独立服务器销售!支持中文工单、支持支付宝和微信以及PayPal付款购买!点击直达:racknerd官方网站INTEL系列可选机房:加利福尼亚州圣何塞、芝加...
java调用webservice为你推荐
李智慧李智慧和韩智慧是一个人吗?个人的详细资料怎样的? cpu监控win10自带cpu温度监控 视频压缩算法关于视频压缩的原理? 知识分享平台关于分享职场技能的知识付费平台,大家有什么好推荐的吗? 知识分享平台微信看到一些文章,可以分享到知识付费的平台吗?怎么操作呀? 数据监测监测局是做什么的? oa办公系统下载OA在哪里下载? 防火墙排名什么防火墙最好 模式识别算法机器学习和模式识别有什么区别?看教材,发现它们的算法都差不多一样啊。。。 腾讯技术腾讯是什么东西?
vps服务器租用 韩国服务器租用 x3220 asp.net主机 59.99美元 iis安装教程 patcha 我爱水煮鱼 域名转接 空间合租 卡巴斯基破解版 东莞idc www789 免费asp空间申请 xuni 稳定空间 中国联通宽带测试 腾讯数据库 存储服务器 万网服务器 更多