我开发了一个WCF服务.NET4(SOAP),我试图从Android中使用它。 但是我得到这个错误的问题是:
org.xmlpull.v1.XmlPullParserException: 预期:END_TAG {http://schemas.xmlsoap.org/soap/envelope/}Body (位置:END_TAG @ 1:761 在java.io.InputStreamReader@437c3ff0)
在这一行:
androidHttpTransport.call(SOAP_ACTION, envelope);
这是我的代码:
private static final String SOAP_ACTION = "http://tempuri.org/OCRWebService/extractText";
private static final String METHOD_NAME = "extractText";
private static final String NAMESPACE = "http://tempuri.org/";
private static final String URL = "http://10.0.2.2/ocrwebservice/Service.svc";
private String extractText(byte[] _data){
try {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
PropertyInfo p1=new PropertyInfo();
p1.setName("image2up");
p1.setType(_data);
request.addProperty(p1);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(request);
AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);
androidHttpTransport.debug=true;
androidHttpTransport.call(SOAP_ACTION, envelope); // error here
SoapObject result=(SoapObject)envelope.getResponse();
String resultData=result.getProperty(0).toString();
} catch (Exception e) {
Log.i("123",e.getMessage());
}
return "false";
}
(有关信息:我想使用wcf servcice将文件从Android设备上传到我的服务器)
答案 0 :(得分:0)
我尝试将相同的内容上传到服务器。但是我得到了序列化异常而不是解析器异常。我也在网址中提到了方法名称。可能你的问题是......我不确定.....
答案 1 :(得分:0)
public void testWebService(Bitmap bmp)
{
MarshalBase64 marshal = new MarshalBase64();
ByteArrayOutputStream out = new ByteArrayOutputStream();
bmp.compress(CompressFormat.PNG, 100, out);
byte[] raw = out.toByteArray();
SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE, OPERATION_NAME);
request.addProperty("image", raw);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
marshal.register(envelope);
HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
try
{
httpTransport.call(SOAP_ACTION, envelope);
Object response = envelope.getResponse();
}
catch (Exception exception)
{
exception.printStackTrace();
}
}
尝试实现它..
答案 2 :(得分:0)
您的错误是由SOAP_ACTION引起的:
在SOAP操作中,您指定:http://packagename/method,您调用
所以将SOAP操作修改为: final String SOAP_ACTION =“http://tempuri.org/extractText”; final String NAMESPACE =“http://tempuri.org/”;
如果不起作用请尝试:
final String SOAP_ACTION =“http://tempuri.org/extractText”; final String NAMESPACE =“http://org.tempury/”;
希望它有所帮助! 迈克!