【问题标题】:Upload a file From android using WCF service and Ksoap2使用 WCF 服务和 Ksoap2 从 android 上传文件
【发布时间】:2011-07-13 16:17:24
【问题描述】:

我开发了一个 WCF 服务 .NET4 (SOAP),我正在尝试从 Android 使用它。 但是我得到这个错误的问题是:

org.xmlpull.v1.XmlPullParserException: 预计:END_TAG {http://schemas.xmlsoap.org/soap/envelope/}正文 (位置: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 服务将文件从 android 设备上传到我的服务器)

【问题讨论】:

    标签: android wcf file upload


    【解决方案1】:

    我尝试了同样的方法将图像上传到服务器..但我得到的是序列化异常而不是解析器异常。我在网址中也提到了方法名称。可能是你的问题是......我不确定......

    【讨论】:

      【解决方案2】:

      您的错误是由 SOAP_ACTION 引起的:

      在 SOAP 操作中你指定:http://packagename/method 你调用

      因此,将您的 SOAP 操作修改为: 最终字符串 SOAP_ACTION = "http://tempuri.org/extractText"; final String NAMESPACE = "http://tempuri.org/";

      如果不起作用,请尝试以下操作:

      最终字符串 SOAP_ACTION = "http://tempuri.org/extractText"; final String NAMESPACE = "http://org.tempury/";

      希望对您有所帮助! 迈克!

      【讨论】:

        【解决方案3】:
        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();
            }
        } 
        

        尝试实现它..

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多