用Java调用webservice,并解析返回值,大神们 求助

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Java调用webservice,并解析返回值,大神们 求助相关的知识,希望对你有一定的参考价值。

简单通用点的,谢谢了,也可以qq邮箱707883800 别报错啊

你是哪个公司?我在上班,我不能上QQ,我给你贴代码,有问题你追问我!
private void 方法名(String storecd)
// 传递参数
param.clear();
param.put("webservice的输入值的名字,(必须完全一样)", 参数);
//连接web service
openRequest(getString(R.string.EXSERVER_SCRAP_GetShipName), param,
DataAccessMode.Asynchronous, dataAccessHandler);


//数据处理
private IDataAccessHandler dataAccessHandler = new AbstractDataAccessHandler(
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
DataAccessBundle bundle = request.getBundle();
if (getString(R.string.EXSERVER_SCRAP_GetShipName).equals(request.getResource()))
ArrayList<Object> 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获取了数据后(好像都是xml吧)在java这边在解析出来

追答

我知道,我和你做的一样,我也在网上查了,都不好使,这绝对正确

追问

这直接能用?我这是第一次弄webservice这东西,所以不知道咋弄,你有例子吗?能给我个吗

追答

公司的内部资料,不能给的不好意思

追问

哦,上面这能从webservice获取数据,在解析出来?我放程序里,还有错呢,忘说了,我是刚接触webservice,想学学

参考技术A http://www.blogjava.net/tianchijiaozi/archive/2013/03/15/396452.html

我用这个例子入门的,非常好。再具体的调用就得自己研究了,或者发出来大家探讨也行。

java 调用webservice并解析xml结果

 
import com.yemast.roadcqc.server.webserivce.login.request.UserInfoRequest;
import lombok.extern.slf4j.Slf4j;
import org.apache.axiom.om.*;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import javax.xml.namespace.QName;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

@Slf4j
public class Test { static final String url = "http://localhost:8091/roadcqc_webservice_war_exploded/services/loginIntf?wsdl"; static final String method = "getToken"; static final String targetNamespace = "http://login.webserivce.server.roadcqc.yemast.com"; public static void main(String[] args) { axis2WebService(); } private static void axis2WebService() { try { // 参数值 UserInfoRequest u = new UserInfoRequest(); u.setUploadDateTime("2020-06-01"); u.setUserName("admin"); u.setPassword("admin"); u.setUploadDateTime("2020-01-1"); u.setToken(""); OMElement o = requestWs(targetNamespace,url,method,u); Map m = getResultToMap(o); System.out.println(m.toString()); } catch (Exception ex) { ex.printStackTrace(); } } private static OMElement requestWs(String targetNamespace, String url, String method, Object o) { try { ServiceClient sender = new ServiceClient(); EndpointReference endpointReference = new EndpointReference(url); Options options = new Options(); options.setTo(endpointReference); sender.setOptions(options); OMFactory fac = OMAbstractFactory.getOMFactory(); // 这个和qname差不多,设置命名空间 OMNamespace omNs = fac.createOMNamespace(targetNamespace, ""); //这个是namespace的str OMElement data = fac.createOMElement(method, omNs); //method是方法 QName qname = new QName("request"); //固定的request参数 webservice接收参数的名称 OMElement inner = fac.createOMElement(qname); if (o != null) { //通过反射获取参数 Class c = o.getClass(); Field[] fields = c.getDeclaredFields(); for (Field f : fields) { f.setAccessible(true); QName qname1 = new QName(f.getName()); OMElement inner1 = fac.createOMElement(qname1); inner1.setText(String.valueOf(f.get(o))); inner.addChild(inner1); } } data.addChild(inner); // 发送数据,返回结果 OMElement omElement = sender.sendReceive(data); return omElement; } catch (Exception e) { log.error("ws error:", e); } return null; } //解析返回的结果 public static Map<String, Object> getResultToMap(OMElement element) { Map<String, Object> map = new HashMap<>(); if(element == null ) return map; Iterator iterator = element.getChildElements();//response while (iterator.hasNext()) { //n:return OMElement result = (OMElement) iterator.next(); Iterator iterator_layer2 = result.getChildElements(); while (iterator_layer2.hasNext()) { // 结果 OMElement result_2 = (OMElement) iterator_layer2.next(); String key = result_2.getLocalName(); String value = result_2.getText(); map.put(key, value); } } return map; } }

 

以上是关于用Java调用webservice,并解析返回值,大神们 求助的主要内容,如果未能解决你的问题,请参考以下文章

kettle调用一个web service 如何将返回的json字符串解析并放入数据表中

怎么用Axis2发布一个webservice,service返回json格式数据,可以用Ajax访问直接解析?

请教:C# WebService调用Java WebService(返回Json类型数据) ,为啥接收为null

c#调用Java发布的webservice返回值为False

在c#中,用soap调用webservice,发送消息并取得webservice方法里返回的内容,用http 的方法

java 调用webservice并解析xml结果