Как назвать Веб-сервис.NET от Android с помощью KSOAP2?

, Как я могу установить на пути в соответствии со своим корневым каталогом?

mkdir /home/masi/.local

cd Python-2.6.1
make clean
./configure --prefix=/home/masi/.local
make
make install

Тогда выполненное использование:

/home/masi/.local/bin/python

Так же, если у Вас есть сценарии (например, CGI), которые требуют Вашей собственной пользовательской версии Python, который необходимо сказать им явно:

#!/home/masi/.local/bin/python

вместо того, чтобы использовать систему по умолчанию Python, который выберет “#!/usr/bin/env python”.

можно изменить установку PATH для создания просто ввода “python” из консоли выполненным, что версия, но это не поможет для веб-приложений, запускаемых при другом пользователе.

при компиляции чего-то, что связывается с Python (например, mod_wsgi) необходимо сказать его, где найти Python, или он будет использовать систему один вместо этого. Это часто делается что-то как:

./configure --prefix=/home/masi/.local --with-python=/home/masi/.local

Для других находящихся в setup.py расширений как MySQLdb просто необходимо выполнить setup.py сценарий с правильной версией Python:

/home/masi/.local/bin/python setup.py install
48
задан Peter Mortensen 18 August 2011 в 21:36
поделиться

3 ответа

Как выглядит ваш .NET Webservice?

У меня был тот же эффект, используя ksoap 2.3 с code.google.com . Я следовал руководству по The Code Project (это отличный BTW.)

И каждый раз, когда я использовал

    Integer result = (Integer)envelope.getResponse();

, чтобы получить результат моего веб-сервиса (независимо от типа, я пробовал Object, String , int) Я столкнулся с исключением org.ksoap2.serialization.SoapPrimitive .

Я нашел решение (обходной путь). Первое, что мне нужно было сделать, это удалить атрибут SoapRpcMethod () из моих методов веб-службы.

    [SoapRpcMethod(), WebMethod]
    public Object GetInteger1(int i)
    {
        // android device will throw exception
        return 0;
    }

    [WebMethod]
    public Object GetInteger2(int i)
    {
        // android device will get the value
        return 0;
    }

Затем я изменил свой код Android на:

    SoapPrimitive result = (SoapPrimitive)envelope.getResponse();

Однако я получаю объект SoapPrimitive, который имеет закрытое поле «значение». К счастью, значение передается через метод toString () , поэтому я использую Integer.parseInt (result.toString ()) , чтобы получить свое значение, которого мне достаточно, потому что я у меня нет сложных типов, которые мне нужно получить от моей веб-службы.

Вот полный источник:

private static final String SOAP_ACTION = "http://tempuri.org/GetInteger2";
private static final String METHOD_NAME = "GetInteger2";
private static final String NAMESPACE = "http://tempuri.org/";
private static final String URL = "http://10.0.2.2:4711/Service1.asmx";

public int GetInteger2() throws IOException, XmlPullParserException {
    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

    PropertyInfo pi = new PropertyInfo();
    pi.setName("i");
    pi.setValue(123);
    request.addProperty(pi);

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

    AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);
    androidHttpTransport.call(SOAP_ACTION, envelope);

    SoapPrimitive result = (SoapPrimitive)envelope.getResponse();
    return Integer.parseInt(result.toString());
}
14
ответ дан 26 November 2019 в 19:03
поделиться

Введите тип конверта в SoapPrimitive:

SoapPrimitive result = (SoapPrimitive)envelope.getResponse();
String strRes = result.toString();

, и он будет работать.

7
ответ дан 26 November 2019 в 19:03
поделиться

Это очень просто. Вы получаете результат в объекте , который является примитивным.

Ваш код:

Object result = (Object)envelope.getResponse();

Правильный код:

SoapObject result=(SoapObject)envelope.getResponse();

//To get the data.
String resultData=result.getProperty(0).toString();
// 0 is the first object of data.

Я думаю, что это должно определенно работать.

24
ответ дан 26 November 2019 в 19:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: