【问题标题】:Android Http Network Request ErrorAndroid Http 网络请求错误
【发布时间】:2018-01-19 12:08:57
【问题描述】:

我需要你的帮助。我获得了 Internet 许可,但是当我尝试从此 url 获取数据时,它无法到达我的 textview。当我按下按钮时,总是说“sunucu cevabı”,我想暂时在我的textview 中查看这个 Json 数组,然后我想稍后解析它们。

这是我的代码

public class MainActivity extends AppCompatActivity {


     TextView text;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button button =(Button)findViewById(R.id.btn);
            text =(TextView)findViewById(R.id.textView);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    text.setText("Sunucu cevabı");
                    new arkaPlan().execute("https://restcountries.eu/rest/v2/capital/tallinn");
                    //bağlanmasını istediğimiz yer
                }
            });
        }


        class arkaPlan extends AsyncTask<String,String,String> {
            protected String doInBackground(String... params) {
                // ilk elamanı sunucu adresi
                HttpURLConnection connection = null;
                BufferedReader br = null;
                try {
                    URL url = new URL(params[0]); //http://
                    connection = (HttpURLConnection) url.openConnection();
                    connection.connect(); // sunucuya bağlandık

                    InputStream is = connection.getInputStream();
                    br = new BufferedReader(new InputStreamReader(is));

                    String satir;
                    String dosya = "";
                    while ((satir = br.readLine()) != null) {
                        Log.d("satir ", satir);
                        dosya += satir;
                    }
                    return dosya;

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

                }
                return "hata";
            }

            @Override
            protected void onPostExecute(String s) { // dönen bilgi burdaki String s içinde olur.
                Log.d("postExecute",s);
                text.setText(s);
            }
        }

    }

【问题讨论】:

  • 这行Log.d("postExecute", s);打印的是什么?
  • 你收到字符串响应了吗?
  • 如果你有任何异常,请查看你的 logcat
  • 是的,我想在我的 textView 中获得字符串响应

标签: java android url networking


【解决方案1】:

完成任务后更新UI,实现onProgressUpdate()看看。

@Override
    protected void onProgressUpdate(String... values) {
        // TODO Auto-generated method stub
        super.onProgressUpdate(values);
          ((Activity) context).runOnUiThread(new Runnable() {
                public void run() {
                    TextView  text =(TextView)findViewById(R.id.textView);
                    text.setText(values.toString());
                }
            });      
    }

【讨论】:

  • 我在 onPostExecute 之后添加了它,但还是一样,没有任何变化
  • 先生,我一直在尝试解决这个问题来制作应用程序,它挡住了我的路:D
【解决方案2】:
****I solved it****
package deneme.json.jsondeneme;

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

import org.w3c.dom.Text;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;


    public class MainActivity extends AppCompatActivity {

    TextView text;
    Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

         button = (Button) findViewById(R.id.button);
        text= (TextView) findViewById(R.id.textView);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new arkaPlan().execute();

            }
        });
    }

    protected class arkaPlan extends AsyncTask<Void,Void,Void>{
        BufferedReader br = null;
        StringBuilder sb = new StringBuilder();
        String line,result= "";
        @Override
        protected Void doInBackground(Void... voids) {

            try {
                URL url = new URL("https://restcountries.eu/rest/v2/capital/tallinn");
                br = new BufferedReader(new InputStreamReader(url.openStream()));
                while((line = br.readLine())!= null){
                    sb.append(line).append("\n");
                }
                result = sb.toString();

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            text.setText(result);
            super.onPostExecute(aVoid);
        }
    }

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-09
    • 2017-12-27
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 2022-07-12
    相关资源
    最近更新 更多