【问题标题】:Android: HttpGet not posting to DatabaseAndroid:HttpGet 未发布到数据库
【发布时间】:2012-12-12 09:32:06
【问题描述】:

我只是想将数据发送到数据库作为概念证明。我目前有一个 ASP 页面可以为我发送数据。我有一个非常基本的 Android 应用程序设置将信息发布到数据库,但没有任何数据发布在那里。我没有收到任何错误或强制关闭,并且该 url 是使用该特定 ASP 文件发送到数据库的正确 url 和格式。

这是我的代码

HttpClient client = new DefaultHttpClient();

            //set url
            String url = "**removed for security reasons**";
            url += "var1=" + editVar1.getText().toString() + "&var2=" + editVar2.getText().toString() + "&var3=" + editVar3.getText().toString();

            //display url in toast
            Toast toast = Toast.makeText(getApplicationContext(), url, Toast.LENGTH_LONG);
            toast.show();

            //prepare connection
            HttpGet request = new HttpGet(url);

            //send HttpGet
            try
            {
                client.execute(request);
            }
            catch (Exception e){}

【问题讨论】:

    标签: java android asp.net database get


    【解决方案1】:

    首先通知您,网络操作应在后台执行(作为 asynctask 或 intentService)。 其次,您不应该使用 GET 在数据库中写入内容。 您应该使用 POST 而不是 GET:

            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(url);
    
            try {
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
                nameValuePairs.add(new BasicNameValuePair("var1", editVar1.getText().toString()));
                nameValuePairs.add(new BasicNameValuePair("var2",editVar2.getText().toString()));
                nameValuePairs.add(new BasicNameValuePair("var3",editVar3.getText().toString()));
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    
                HttpResponse response = httpclient.execute(httppost);
    

    【讨论】:

    • 我知道我应该使用 POST 而不是 GET,但是对于我正在做的事情,我想要更多的概念证明,我得到的是一个使用 GET 方法的 ASP 页面传递信息。
    • 从字面上看,我要问的是这段代码是否有任何问题。稍后我可能会将其更改为 POST,但为了让这种类型的数据库连接继续进行,这是我被告知要使用的方法。
    • 在后台线程上运行整个进程解决了我的问题。
    • 您的代码实际上没有问题,也可以这样做。但是较新版本的 SDK 要求所有与网络活动相关的代码都不应成为主线程的一部分,因为它们可能会使应用程序无响应。
    • 是的,我解决了。奇怪的是,它从来没有导致强制关闭,并且在我将它移到另一个线程之前也没有完成任务。我已经完成了必须在后台线程中完成的短信,但即使它仍然有效,它也会导致强制关闭。
    猜你喜欢
    • 2012-11-16
    • 2012-06-28
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 2018-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多