[英]KSOAP Android and ASP.NET web service
我想知道是否有人可以帮助我了解这个问题。 我正在使用包含Web方法存储数据的Web服务。 数据是使用ksoap库从Android手机发送来发送信封的。 我能够将数据从手机发送到服务器,并且Web方法可以通过NPGSQL和POSTGRES执行该功能来存储数据。
当我发送数据超过20次时,问题开始出现,Web服务不再接收数据。 我不知道这是ksoap的问题还是我的Web服务的问题。
Android代码
soap_server_retrieve.setOnClickListener(new OnClickListener() {
volatile boolean flag = true;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
String result;
String NAMESPACE = "http://demo.android.org/";
String URL = "http://192.168.1.9/AndroidServer/WebService.asmx";
String METHOD_NAME = "sensor_value";
String SOAP_ACTION = "http://demo.android.org/sensor_value";
int TimeOut=3000;
@Override
public void run() {
try{
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
SoapObject request = new SoapObject(NAMESPACE,METHOD_NAME);
request.addProperty("a", Double.parseDouble(textTEMPERATURE_reading.getText().toString()));
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.implicitTypes= true;
envelope.dotNet = true;
envelope.encodingStyle= SoapSerializationEnvelope.XSD;
envelope.setOutputSoapObject(request);
MarshalDouble md = new MarshalDouble();
md.register(envelope);
HttpTransportSE transport = new HttpTransportSE(URL,TimeOut);
try {
transport.call(SOAP_ACTION, envelope);
SoapPrimitive result_xml = (SoapPrimitive) envelope.getResponse();
result = result_xml.toString();
} catch (HttpResponseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
//Toast.makeText(Ambiental_temperature.this, e.getMessage(), Toast.LENGTH_SHORT).show();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
//Toast.makeText(Ambiental_temperature.this, e.getMessage(), Toast.LENGTH_SHORT).show();
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
//Toast.makeText(Ambiental_temperature.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
catch(Exception e)
{
txt_server_value.setText(e.toString());
}
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Toast.makeText(Ambiental_temperature.this,
result, Toast.LENGTH_LONG).show();
txt_server_value = (TextView) findViewById(R.id.txt_server_value);
//TextView result = (TextView) findViewById(R.id.txt_server_value);
//txt_server_value.setText("Sensor.TYPE_AMBIENT_TEMPERATURE NOT Available");
txt_server_value.setText(result);
}
});
}
}, 0, 5000);
}
});
ASP.NET Web服务
[WebMethod(CacheDuration = 60)]
public double sensor_value(double a)
{
DateTime now = DateTime.Now;
string query;
query = "insert into sensor_values VALUES (@id,@sensor_name,@value,@date)";
NpgsqlConnection cnt = new NpgsqlConnection("Server=localhost;Port=5433; User Id=postgres;Password=admin;Database=Android_Sensors");
cnt.Open();
NpgsqlCommand command = new NpgsqlCommand(query, cnt);
command.Parameters.Add(new NpgsqlParameter("id", "1"));
command.Parameters.Add(new NpgsqlParameter("sensor_name", "Ambiental Temperature"));
command.Parameters.Add(new NpgsqlParameter("value", a));
command.Parameters.Add(new NpgsqlParameter("date",now));
try
{
NpgsqlDataReader dr = command.ExecuteReader();
}
catch (NpgsqlException ex)
{
}
cmb_Tables.Text + " and " + cmb_Tables2.Text, "");
table in the datagridview dgv_table
return a;
}
我不明白的是,为什么当我向Web服务发送20倍数据时,它不再能够接收?
如果重建网页并重新发布网站,则我可以再次发送20个值,然后就无法再通过电话发送了,这暗示了我的Web服务可能是问题。 我真的很感谢您的帮助。
如果有多个呼叫,请在每次呼叫后尝试断开连接。
transport.getConnection().disconnect();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.