服务器 - Android应用程序和服务器之间的客户端连接

时间:2013-05-30 20:04:54

标签: java android sockets connection

我正在开发Java服务器应用程序和Android应用程序,我的Android应用程序需要从/向服务器(Bidirectional)发送和接收数据,例如我的Android应用程序需要登录到服务器并且服务器需要知道谁登录了。 您建议我使用Wich协议来做这种程序吗?

2 个答案:

答案 0 :(得分:1)

通常在这种情况下,您可以出于多种原因使用HTTP协议。首先,即使它位于防火墙之后,您也可以访问您的服务器。 其次使用HTTP,您可以发送在android中广泛使用的XML或JSON数据。 您唯一的限制是HTTP协议是一个同步协议,因此您发送并等待答案。 使用HTTP,您可以使用现有的服务器体系结构,并可以使用Web服务包装业务层,以便公开服务。 如果您需要该服务器可以联系您的应用程序,您可以使用Google Cloud Mesaging。

答案 1 :(得分:1)

使用Http请求(获取或发布请求)与服务器通信。 您必须使用线程或AsyncTask来执行您的请求,否则Api 11+的执行将失败。 我附上了一个接收xml的http请求示例:

    import org.apache.http.*;
    [..]

    public String getXmlFromUrl(String url) {
    String xml = null;

    try {
        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(url);
        HttpResponse httpResponse = httpClient.execute(httpGet);
        HttpEntity httpEntity = httpResponse.getEntity();
        xml = EntityUtils.toString(httpEntity);
    } catch (UnsupportedEncodingException e) {
        Log.d("XMLParser-getXmlFromUrl", "UnsupportedEncodingException");
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        Log.d("XMLParser-getXmlFromUrl", "ClientProtocolException");
        e.printStackTrace();
    } catch (IOException e) {
        Log.d("XMLParser-getXmlFromUrl", "IOException");
        e.printStackTrace();
    }
    // return XML
    return xml;
}