当前位置: 首页 > 知识库问答 >
问题:

通过Asynctask将字符串发布到外部URL

秦俊豪
2023-03-14

目前,我正在通过外部URL检索数据,该URL使用PHP脚本并返回JSON值。工作很好。

但如何发送用于查询的字符串,以便在PHP脚本中执行以下操作:

$name = $_POST['name']; //this was sent from the Android app. How do I send this from the app.
$sql = "SELECT name FROM tablename WHERE category = '$name'";
$result = mysqli_query($con, $sql) or die("Error in Selecting");

注意:我不想使用凌空抽射。

我的AsyncTask扩展类,它当前不向URL发送任何值。

class BackgroundTask extends AsyncTask<Void,Void,String> {

        final String jsonUrl = "http://example.com/getdata.php";

        @Override
        protected String doInBackground(Void... params) {
            try {
                URL url = new URL(jsonUrl);
                HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
                InputStream in = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
                StringBuilder stringBuilder = new StringBuilder();

                while ((jsonString = bufferedReader.readLine()) != null){
                    stringBuilder.append(jsonString+"\n");
                }

                bufferedReader.close();
                in.close();
                httpURLConnection.disconnect();
                return stringBuilder.toString().trim();

            } catch (Exception e) {
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);

            products = new ArrayList<>();

            try {
                jsonObject = new JSONObject(s);
                String category = jsonObject.getString("viewProduct");
                JSONArray jsonArray = new JSONArray(category);

                for(int x=0; x < jsonArray.length(); x++){
                    JSONObject jsonPart = jsonArray.getJSONObject(x);
                    products.add(jsonPart.getString("name"));
                }

                adapter = new ArrayAdapter<>(MainActivity.this, android.R.layout.simple_list_item_1, android.R.id.text1, products);
                productListView.setAdapter(adapter);

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }

共有1个答案

端木淇
2023-03-14

如果您只是在讨论将数据作为POST请求的主体发送,那么可以使用如下方法:

HttpURLConnection conn= (HttpURLConnection) url.openConnection();           
conn.setDoOutput( true );
conn.setRequestMethod( "POST" );
conn.setRequestProperty( "Content-Length", Integer.toString( postDataLength ));
try {
   DataOutputStream wr = new DataOutputStream( conn.getOutputStream());
   wr.write( postData );
} catch (IOException ex) {}
 类似资料:
  • 问题内容: 我正在构建Android应用程序的项目的C 方面。我需要一些信息(通过字符串和字符串数组)传递给Java应用程序(通过JNI)。我以前从未做过,相反方向的人没有C 的经验,并承认他们不能真正提供帮助。 我确实找到了以下代码(从这里开始) 但这对我来说毫无意义。通常,我不确定如何将其合并到程序的C ++端,而且我无法确切了解其工作原理。代码是否在执行该行时发出消息?还是在for循环中执行

  • 问题内容: -– -–解决方案— -– 问题在我们的服务器上。如果将www放在域名前面,它只能处理发帖请求。这就是造成问题的原因。我将第一个答案设置为THE答案,因为一旦我整理出网址,它便会起作用。 原始问题 我的PHP脚本中有一个POST变量,始终为空。 我试图更改变量的名称,变量的内容等。 问题必须存在于Java代码中,因为当我在php中请求时,它为null。 这是我的情况: 我让用户拍摄照片

  • 我试图通过post发布到Web Api值控制器: 但该值始终为null。 我正在使用Postman在body中发布这个:设置为Json(应用程序/json)

  • 我有一个exe文件,可以像这样从cmd运行: 我想从java发送这个命令。我知道我可以这样使用ProcessBuilder: 但我不知道如何通过管道将字符串文本发送到此命令。如果可能的话,我更喜欢不创建文本.txt文件的解决方案。

  • 问题内容: 我有两个脚本,Server.py和Client.py。我有两个目标: 为了能够一次又一次地从客户端向服务器发送数据。 为了能够将数据从服务器发送到客户端。 这是我的Server.py: 这是我的客户: 该函数首次运行(“ e”进入服务器,我返回返回消息),但是如何使它一遍又一遍地发生(类似于聊天应用程序)?该问题在第一次之后开始。消息不会在第一次之后发送。我究竟做错了什么?我是pyth

  • 问题内容: 我是Android应用程序开发的新手。请找到我的AsyncTask代码,用于在用户单击按钮时连接URL。 请参阅我的MainActivity方法: 在这里,我遇到了一个错误。我不知道我的代码有什么问题。谁能帮帮我吗 ? 问题答案: 错了 您不应创建活动类的实例。 活动由开始。 您可以将asynctask设为活动类的内部类,并在其中更新ui 或使用界面 如何从AsyncTask返回布尔值