Как я могу подключить Android к веб-службе php

Может ли кто-нибудь указать мне учебник или рабочий пример подключения Android к веб-службе php с использованием ksoap2 или чего-то еще?


person user1157662    schedule 19.01.2012    source источник
comment
возможный дубликат веб-сервиса REST и SOAP в android   -  person Mark B    schedule 19.01.2012


Ответы (1)


Я использую свой PHP-Webservice следующим образом:

Джава:

// params => "?action=getInfos"
private JSONObject getJSONObject(String params)
{
    try
    {
        String url = path2webservicephp + params;

        System.out.println("Call URL: " + url);

        HttpGet request = new HttpGet(url);

        request.setHeader("Content-Type", "text/xml;charset=UTF-8");

        DefaultHttpClient httpclient2 = new DefaultHttpClient();

        HttpResponse response = httpclient2.execute(request);

        if (response.getStatusLine().getStatusCode() != 200)
            throw new ConnectionException("Status Code is " + response.getStatusLine().getStatusCode() + ": " + response.getStatusLine().getReasonPhrase());

        BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
        String line = reader.readLine();

        MyConstants.RECEIVEDBYTES += line.length();

        reader.close();
        if ("[]".equals(line))
            return null;
        return new JSONObject(line);
    }
    catch (Exception e)
    {
        LLog.e(Webservice.class, "Exception! params: " + params);
        LLog.e(e, Webservice.class);
    }
    return null;
}

// LLog.e из моего собственного класса. Он регистрируется в Log.e и в файл

PHP:

$array = array('status' => 'ok', 'message' => 'your action was: '.$_GET['action']);
echo json_encode($array);
person PKeidel    schedule 19.01.2012
comment
это возвращает wsdl, не вызывает метод и возвращает результаты. - person user1157662; 20.01.2012
comment
Мой веб-сервис делает то, что я написал на PHP, и дает мне ответ за его работу. Я попробовал это с ksoap2, но написать собственный с JSON для меня было проще. (Потому что я ненавижу XML...) И это доставило массу удовольствия в сочетании с большим эффектом обучения. - person PKeidel; 20.01.2012
comment
чувак, я знаю, что ты прав. но дело в том, что метод вообще не вызывается. для меня ответ представляет собой строку xml, но вместо этого он просто возвращает wsdl, а также обратите внимание, что мой веб-сервис написан с помощью Yii php framework... я даже готов к JSON, если он работает для вызова. - person user1157662; 20.01.2012
comment
наконец-то получил его You require TCP MON and port 8080->80 to be mapped and you can see the response private static final String NAMESPACE = "urn:MobileAppControllerwsdl"; private static final String URL = "http://10.0.2.2:8080/eventorbit/eo/mobileapp/mobile?ws=1"; private static final String SOAP_ACTION = "urn:MobileAppControllerwsdl#getQuote"; private static final String METHOD_NAME = "getQuote"; остальное почти то же самое .... без сопоставления портов он зависает во время выполнения - person user1157662; 22.01.2012