我想创建一个Android应用程序,它可以从计算机上的服务器发送和接收纯文本消息。我尝试使用套接字但我无法将消息发送回服务器,只接收它们。
是否有与计算机通信的内置方式?
谢谢
答案 0 :(得分:0)
就个人而言,我为此目的使用Web Service。
Web服务是用于在其间交换信息的标准 异构类型的应用程序或系统。软件应用 用各种编程语言编写并运行各种编程语言 平台可以使用Web服务通过Internet交换信息 使用http协议。
使用Web Service,您可以编写应用程序使用的方法。这些方法可以像任何其他方法一样返回或接受参数,并使用SOAP传输此信息。以下是使用Web服务的Android应用程序示例。在这种情况下,Web服务将Celcius转换为Fahrenheit。
private final String NAMESPACE = "http://www.w3schools.com/webservices/";
private final String URL = "http://www.w3schools.com/webservices/tempconvert.asmx";
private final String SOAP_ACTION = "http://www.w3schools.com/webservices/CelsiusToFahrenheit";
private final String METHOD_NAME = "CelsiusToFahrenheit";
private String TAG = "PGGURU";
private static String celcius;
private static String fahren;
public void getFahrenheit(String celsius) {
//Create request
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
//Property which holds input parameters
PropertyInfo celsiusPI = new PropertyInfo();
//Set Name
celsiusPI.setName("Celsius");
//Set Value
celsiusPI.setValue(celsius);
//Set dataType
celsiusPI.setType(double.class);
//Add the property to request object
request.addProperty(celsiusPI);
//Create envelope
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
//Set output SOAP object
envelope.setOutputSoapObject(request);
//Create HTTP call object
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try {
//Invole web service
androidHttpTransport.call(SOAP_ACTION, envelope);
//Get the response
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
//Assign it to fahren static variable
fahren = response.toString();
} catch (Exception e) {
e.printStackTrace();
}
}
在上面的示例中,Web Service位于地址为http://www.w3schools.com/webservices/tempconvert.asmx的服务器上。您可以单击该链接以在浏览器中使用Web服务。
如前所述,Web Service可以用各种编程语言编写。 Here's如何使用C#编写一个示例。此Web服务可以使用不仅限于C#的语言(如上面的Java示例)。