【问题标题】:Android JSON Data Posting results in IO Exception AlwaysAndroid JSON 数据发布总是导致 IO 异常
【发布时间】:2015-01-04 04:24:09
【问题描述】:

我有一台服务器,我使用以下链接在我的数据库中发布数据

http://URL.php?action=insert&vhc=vehiclenumber&mobile=mobilenumberoftheperson&time=currenttime

为了记录车辆进入时间,现在我想从我使用以下代码的 Android 发布相同的数据:

内部按钮是这样的:

 button.setOnClickListener(new View.OnClickListener() {

        //Toast.makeText(getApplicationContext(),"Data is tried!", Toast.LENGTH_LONG).show();
        public void onClick(View v)
        {
            new Thread(new Runnable() {
                public void run() {
                    postData();
                }
            }).start();
        }
    });

我的 PostData 函数定义如下:

public void postData() {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("url.php");

    try {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("vhc", "ABC124"));
        nameValuePairs.add(new BasicNameValuePair("mobile", "089944440000"));
        nameValuePairs.add(new BasicNameValuePair("time", "2014-12-28 22:22:52"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

    } catch (ClientProtocolException e) {
        message = e.getMessage();
        // TODO Auto-generated catch block
    } catch (IOException e) {
        message= e.getMessage();

        // TODO Auto-generated catch block
    }
}

现在我尝试调试并发现它在 HttpResponse response = httpclient.execute(httppost); 处失败步骤并将其引导至 IOException,请指出我的错误以解决问题。谢谢!

【问题讨论】:

  • URL.php 不是有效的网址。发布你的 logcat。
  • 我只是做了这个 URL 来显示,实际是 www.websiteServer.com/myDBname.php?action=insert&vhc=vehiclenumber 等
  • 使用异步库,例如改造。至少使用异步任务不要为此创建线程。

标签: java php android json


【解决方案1】:

在您当前的解决方案中,您创建了一个线程,但该线程按顺序执行您的代码,并且它不等待来自您的服务器的响应。结果,您的客户得到一个空响应。

解决方案:您必须使用 AsyncTask 从/向服务器检索/发送数据。在 AsyncTask 的 doBackground 方法中执行数据检索部分。并从 postExecute 方法中获取您的响应。查看详情here

【讨论】:

  • 谢谢,我现在使用了异步调用,我没有遇到 IOerror 但即使是现在也没有发送数据。我看不到我的记录被发送到数据库
猜你喜欢
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多