gpt4 book ai didi

java - android app urlconnection 获取请求不会工作

转载 作者:行者123 更新时间:2023-11-28 23:26:45 25 4
gpt4 key购买 nike

我遇到了问题。

我不明白为什么下面的代码不起作用。

这是一个简单的应用程序,它向一些应该在表中插入一行的 php fragment 发送 GET 请求。

我不明白为什么它不起作用。

请帮忙。

Java:

package com.example.michael.biyum;

import android.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class MainActivity extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
final AlertDialog alertDialog = alertDialogBuilder.create();
Button startBtn = (Button) findViewById(R.id.btn);
final TextView t = (TextView) findViewById(R.id.hello);
startBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
URL url;
HttpURLConnection urlConnection = null;
try {
url = new URL("http://www.chatty.co.il/biyum.php?q=mkyong");
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = urlConnection.getInputStream();
InputStreamReader isw = new InputStreamReader(in);
int data = isw.read();
while (data != -1) {
char current = (char) data;
data = isw.read();
Toast.makeText(getApplicationContext(),"GET:"+current,Toast.LENGTH_LONG).show();
System.out.print(current);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (urlConnection != null) {
urlConnection.disconnect();
}
}
}


});
}
}

PHP:

   <?php
require('connect.inc.php');
$update_offline="INSERT INTO offline_waiters (user_partner,mail,chat_room) VALUES(0,'gavno','gavno')";
$query_run= mysqli_query($conn,$update_offline);

echo "new";



?>

这是一个简单的测试,应该在我的表中输入一个新行。

当我通过浏览器手动发出请求时,它工作正常。

请再次帮助我了解问题出在哪里。

最佳答案

您需要让网络操作脱离主线程。

我刚刚使用 AsyncTask 完成了这项工作并进行了测试:

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

@Override
protected String doInBackground(Void... params) {
StringBuilder result = new StringBuilder();
URL url;
HttpURLConnection urlConnection = null;
try {
url = new URL("http://www.chatty.co.il/biyum.php?q=mkyong");
urlConnection = (HttpURLConnection) url.openConnection();
InputStream in = urlConnection.getInputStream();
InputStreamReader isw = new InputStreamReader(in);
int data = isw.read();
while (data != -1) {
char current = (char) data;
data = isw.read();
result.append(current);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (urlConnection != null) {
urlConnection.disconnect();
}
}

return result.toString();
}

@Override
protected void onPostExecute(String result) {
Toast.makeText(getApplicationContext(),"GET:"+result,Toast.LENGTH_LONG).show();
}
}

只需从您的点击监听器中执行 AsyncTask:

    startBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
new MyAsyncTask().execute();
});

Toast 中的结果:

enter image description here

关于java - android app urlconnection 获取请求不会工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39006901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com