gpt4 book ai didi

java - ksoap2 org.xmlpull.v1.xmlpullparserexception 预期 start_tag 错误

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:48 25 4
gpt4 key购买 nike

下面是我编写的代码,用于验证用户登录凭据。使用 .net 编写的 Web 服务

private static final String SOAP_ACTION = "http://tempuri.org/getCredentials";
private static final String OPERATION_NAME = "getCredentials";
private static final String WSDL_TARGET_NAMESPACE = "http://tempuri.org/";
private static final String SOAP_ADDRESS = "http://myStaticIP:portNo/WebSiteName/CommunicationInterface.asmx";

SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE, OPERATION_NAME);
request.addProperty("username",Username);
request.addProperty("password", Password);

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE httptransport = new HttpTransportSE(SOAP_ADDRESS);

try
{
httptransport.call(SOAP_ACTION, envelope);
SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
String value = result.toString();
value_LoginWS = value;
val = value;
login_status = Boolean.valueOf(result.toString());

Log.v("CS return value: -", result.toString());
return value;
}
catch (Exception e)
{
Log.v("Exception Soap" , e.toString());
}



在行 "httptransport.call(SOAP_ACTION, envelope)"我得到 exception

"org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <html>
@1:7 in java.io.InputStreamReader@41afb3f0)" <br/><br/>

我不知道错误是什么。这段代码非常适用于模拟器(将 staticIP 更改为 10.0.2.2:portNo)。

请帮我解决这个问题。

谢谢。

最佳答案

以下解决方案已经过测试并用于 WCF Web 服务

如果您遇到此错误

org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <html>
@1:7 in java.io.InputStreamReader@41afb3f0)"

那么可能是您的代码无法访问 Web 服务,因为它没有提供正确的值

METHOD_NAME="";
NAMESPACE ="";
SOAP_ACTION ="";
URL ="";

我费了很大劲才找到这些基本但重要的值来运行 ksoap2

METHOD_NAME="";
NAMESPACE ="";
SOAP_ACTION ="";
URL ="";

有各种例子实际上告诉我这个值背后的理论,即如何明智地生成它们SOAP_ACTION = NAMESPACE + METHOD_NAME。

我继续尝试各种组合,但没有结果。

像我这样的人,在 WebServices 和 Ksoap2 方面经验很少,大部分时间都在使用 JSON实际上感到沮丧,这些值到底是什么以及如何正确获得它们。

在完成以下过程后,您将永远不会遇到找出这些值的困难。

运行你的网络服务

<强>1。网络服务

它会向您显示一个这样的窗口。

Picture 1 webservice

<强>2。 WSDL

现在打开它的 WSDL 文件,方法是单击选择中标记的链接以查看其 WSDL

它看起来像这样。

picture 2 wsdl

3.获取WebService的命名空间

现在使用 Ctrl+F 搜索字符串“Namespace

你会得到这样的东西

picture 3 namespace

在这里你会注意到我们有两个命名空间

targetNamespace="http://tempuri.org/">
<wsdl:import namespace="iscservices.dedicated.co.za"

现在要考虑哪一个,稍后我们将在以下步骤中找出

现在用哪个你以后会知道

<强>4。获取方法名及其对应的SoapAction

寻找您要访问的方法“PutRecipeImagesPost” 在这种情况下

Picture 4 Soap Action

您会看到这里还有用于此方法的 SOAP Action

Soap 操作是 NameSpace + Methodname在这里我们可以看到它使用 "iscservices.dedicated.co.za"所以我们将最终确定为我们的 namespace

<强>5。获取网址

查找字符串 "soap:address location"

see the picture below

此属性的值将是您的 URL

所以最终我们得到了所有需要的值。

根据我们的示例的值

METHOD_NAME="PutRecipeImagesPost";
NAMESPACE ="iscservices.dedicated.co.za";
SOAP_ACTION ="iscservices.dedicated.co.za/InterfaceiPhysioIntelWCFService/PutRecipeImagesPost";
URL ="http://10.0.2.2:51809/iPhysioIntelService.svc/second/";

如果您无法看到上述快照或无法在 WSDl 中获取这些快照的值,请告诉WebService 开发人员 来解决这个问题。

稍后介绍如何使用KSoap2

看下面的 fragment

SoapObject req = new SoapObject(NAMESPACE,METHOD_NAME);
//SoapObject req = new SoapObject(Namespace_Server,MethodName_Server);

//req.addProperty(KEY, VALUE);
//Key : - parameter name that is there in URL of webservice
//value:- value we want to send to the parameter
req.addProperty("ImageData", data);
req.addProperty("login", CommonStaticData.getusername());
req.addProperty("password",CommonStaticData.getpassword());
req.addProperty("recipeId",FileID);

MarshalBase64 mbase = new MarshalBase64();// marshal is used to serialize the byte array

SoapSerializationEnvelope envelop = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelop.bodyOut = req;
envelop.encodingStyle = SoapSerializationEnvelope.ENC2001;
envelop.dotNet = true;
envelop.setOutputSoapObject(req);


HttpTransportSE aht = new HttpTransportSE(URL);

mbase.register(envelop);


aht.call(SOAP_ACTION,envelop);

关于java - ksoap2 org.xmlpull.v1.xmlpullparserexception 预期 start_tag 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12430136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com