Загрузить файл с Android с помощью сервиса WCF и Ksoap2 - PullRequest
1 голос
/ 11 марта 2011

Я разработал 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";

}

(Для информации: я хочу загрузить файл с устройства Android на мой сервер с помощью wcf servcice)

Ответы [ 3 ]

0 голосов
/ 21 апреля 2011
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();
    }
} 

Попробуй это реализовать ..

0 голосов
/ 21 июня 2011

Ваша ошибка вызвана 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/";

Hopeэто помогает!Майк!

0 голосов
/ 19 марта 2011

Я попытался сделать то же самое, чтобы загрузить изображение на сервер. Но я получаю исключение сериализации, а не синтаксический анализатор.Я также упомянул имя метода в URL. Может быть, ваша проблема в том, что ... я не уверен .....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...