我创建了一个提交按钮,我在其中调用包含代码的方法“call2” 使用JSON做一个HttpPost
final Button submit = (Button) findViewById(R.id.Button03);
submit.setOnClickListener(new View.OnClickListener() {
public void onClick(View v)
{
// Perform action on click
Toast.makeText(display.this,"You have selected to submit data of students",Toast.LENGTH_SHORT).show();
call2();
}
});
} //OnCreate method ends
After that I have my call2 method as follows:
public String call2()
{
String result="";
HttpParams httpParams = new BasicHttpParams();
HttpPost httppost = new HttpPost("http://10.0.2.2/enterdata/Service1.asmx");
HttpClient client = new DefaultHttpClient(httpParams);
try
{
JSONArray jsArray = new JSONArray(items2);
jsArray.put(items2);
int TIMEOUT_MILLISEC = 10000; // = 10 seconds
HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC);
HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);
httppost.setEntity(new ByteArrayEntity(
result.toString().getBytes("UTF8")));
HttpResponse response = client.execute(httppost);
if(response.toString()=="success")
{
System.out.println(response);
}
}
catch(Exception e)
{
e.printStackTrace();
}
return result;
}
我的网络服务代码,在插入记录后返回“成功”
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public String put(String value)
{
int count=1;
int rows;
SqlConnection myConnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=student;User ID=sa;Password=123");
try
{
myConnection.Open();
count++;
SqlCommand myCommand = new SqlCommand();
myCommand.Connection = myConnection;
myCommand.CommandText = "insert into record values('"+ count +"','" + value + "')";
myCommand.Parameters.Add("@value", SqlDbType.VarChar).Value = value;
rows = myCommand.ExecuteNonQuery();
SqlDataReader myReader = myCommand.ExecuteReader();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
myConnection.Close();
}
return "success";
}
这是我在方法call2
中删除Android代码的If语句后的log cat 11-10 09:19:28.447: INFO/System.out(412): org.apache.http.message.BasicHttpResponse@44f5d6b8
11-10 09:22:39.957: WARN/KeyCharacterMap(440): No keyboard for id 0
11-10 09:22:39.957: WARN/KeyCharacterMap(440): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
11-10 09:22:40.447: DEBUG/dalvikvm(124): GC_EXPLICIT freed 1224 objects / 67584 bytes in 363ms
11-10 09:22:42.498: DEBUG/dalvikvm(440): GC_FOR_MALLOC freed 2924 objects / 197768 bytes in 80ms
11-10 09:22:42.587: INFO/System.out(440): org.apache.http.message.BasicHttpResponse@44f357a0
现在,当我运行我的代码时,我无法在logcat中看到任何响应。我的println语句没有被执行,我不知道为什么
有人可以帮助我吗?
答案 0 :(得分:6)
正如yorkw所说,我怀疑 response.toString()会为您提供回复文字。这就是我经常检查我的回答的方式:
if (response.getStatusLine().getStatusCode() == 200)
{
HttpEntity entity = response.getEntity();
json = EntityUtils.toString(entity);
}
显然,如果响应代码不是200,则会出现某种错误处理
答案 1 :(得分:1)
删除if语句
if(response.toString()=="success")
您将在logcat中看到println消息。
顺便说一下,我非常怀疑response.toString()等于“成功”