Par*_*shi 1 android json web-services http-post
我创建了一个提交按钮,我在其中调用方法"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;
}
Run Code Online (Sandbox Code Playgroud)
我的Web服务代码,在插入记录后返回"success"
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";
}
Run Code Online (Sandbox Code Playgroud)
这是我在方法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
Run Code Online (Sandbox Code Playgroud)
现在当我运行我的代码时,我无法在logcat中看到任何响应.我的println语句没有被执行,我不知道为什么
有人能帮我吗?
正如yorkw所说,我怀疑response.toString()为你提供了响应文本.这就是我通常检查我的回答的方式:
if (response.getStatusLine().getStatusCode() == 200)
{
HttpEntity entity = response.getEntity();
json = EntityUtils.toString(entity);
}
Run Code Online (Sandbox Code Playgroud)
显然,如果响应代码不是200,则会出现某种错误处理
| 归档时间: |
|
| 查看次数: |
5636 次 |
| 最近记录: |