使用JSON执行HttpPost时没有响应

时间:2011-11-10 03:33:07

标签: 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;

 }

我的网络服务代码,在插入记录后返回“成功”

     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语句没有被执行,我不知道为什么

有人可以帮助我吗?

2 个答案:

答案 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()等于“成功”