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