Java Web服务没有';t工作(安卓工作室)

Java Web服务没有';t工作(安卓工作室),java,android,json,web-services,android-studio,Java,Android,Json,Web Services,Android Studio,所以我第一次尝试开发web服务,这对我来说真的很难。。。我只想得到一个包含整个JSON代码的字符串,但由于某种原因我没有得到它 AndroidManifest(忽略应用程序名称): Web服务类: package com.example.rome.networkplis; import android.os.AsyncTask; import android.util.Log; import org.json.JSONObject; import java.io.BufferedReader

所以我第一次尝试开发web服务,这对我来说真的很难。。。我只想得到一个包含整个JSON代码的字符串,但由于某种原因我没有得到它

AndroidManifest(忽略应用程序名称):

Web服务类:

package com.example.rome.networkplis;


import android.os.AsyncTask;
import android.util.Log;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class WebService extends AsyncTask<String, Void, String> {
    String h = null;
    @Override
    protected String doInBackground(String... params) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                URLConnection urlConnection = null;
                InputStream in = null;
                try {
                    URL url = new URL("http://eanousa.tumblr.com/api/read/json");
                    urlConnection = url.openConnection();
                    in = urlConnection.getInputStream();
                    h = getStringFromInputStream(in);
                }
                catch (Exception e){
                    e.printStackTrace();
                }
            }
        };
        Thread thread = new Thread(r);
        thread.start();
        return h;
    }


    public String json() {
        String title = null;
        try {
            JSONObject everything = new JSONObject(doInBackground(""));
            JSONObject thumbObj = everything.getJSONObject("tumblelog");
            title = thumbObj.getString("title");
        }
        catch (Exception e){
            e.printStackTrace();
        }
        return title;

    }
    private static String getStringFromInputStream(InputStream is) {

        BufferedReader br = null;
        StringBuilder sb = new StringBuilder();

        String line;
        try {

            br = new BufferedReader(new InputStreamReader(is));
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return sb.toString();

    }
}
package com.example.rome.networkplis;
导入android.os.AsyncTask;
导入android.util.Log;
导入org.json.JSONObject;
导入java.io.BufferedReader;
导入java.io.ByteArrayOutputStream;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.net.URL;
导入java.net.URLConnection;
公共类WebService扩展异步任务{
字符串h=null;
@凌驾
受保护的字符串doInBackground(字符串…参数){
Runnable r=新的Runnable(){
@凌驾
公开募捐{
URLConnection URLConnection=null;
InputStream in=null;
试一试{
URL=新URL(“http://eanousa.tumblr.com/api/read/json");
urlConnection=url.openConnection();
in=urlConnection.getInputStream();
h=getStringFromInputStream(in);
}
捕获(例外e){
e、 printStackTrace();
}
}
};
螺纹=新螺纹(r);
thread.start();
返回h;
}
公共字符串json(){
字符串标题=null;
试一试{
JSONObject everything=新的JSONObject(doInBackground(“”);
JSONObject thumbObj=everything.getJSONObject(“Tumblog”);
title=thumbObj.getString(“title”);
}
捕获(例外e){
e、 printStackTrace();
}
返回标题;
}
私有静态字符串getStringFromInputStream(InputStream为){
BufferedReader br=null;
StringBuilder sb=新的StringBuilder();
弦线;
试一试{
br=新的BufferedReader(新的InputStreamReader(is));
而((line=br.readLine())!=null){
某人附加(行);
}
}捕获(IOE异常){
e、 printStackTrace();
}最后{
如果(br!=null){
试一试{
br.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
使某人返回字符串();
}
}

感谢您抽出时间来帮助我。

您不需要可运行的对象,只需直接在doInBackground方法中运行代码。

您的
WebService
类扩展了
AsyncTask
,因此您只需在
WebService
上调用
execute()
,即可开始任务。对
AsyncTask
调用
execute()
将从后台线程自动调用
runInBackground()
方法。在这里,您不需要创建新的
Runnable
。您可以调用web服务,然后以字符串形式返回响应。无论您的
runInBackground
方法返回什么,都将作为参数发送到
onPostExecute
。在
onPostExecute
中,您将通知所有侦听器响应。

您完全误用了异步任务。在提问之前,请多看一段教程或谷歌。另外,使用OkHttp进行web调用更容易。
package com.example.rome.networkplis;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity {
    TextView textView;
    String h = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.textView);
        WebService webService = new WebService();
        h = webService.json();
        if (h == null)
            textView.setText("not working");
        else
            textView.setText(h);
    }
}
package com.example.rome.networkplis;


import android.os.AsyncTask;
import android.util.Log;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class WebService extends AsyncTask<String, Void, String> {
    String h = null;
    @Override
    protected String doInBackground(String... params) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                URLConnection urlConnection = null;
                InputStream in = null;
                try {
                    URL url = new URL("http://eanousa.tumblr.com/api/read/json");
                    urlConnection = url.openConnection();
                    in = urlConnection.getInputStream();
                    h = getStringFromInputStream(in);
                }
                catch (Exception e){
                    e.printStackTrace();
                }
            }
        };
        Thread thread = new Thread(r);
        thread.start();
        return h;
    }


    public String json() {
        String title = null;
        try {
            JSONObject everything = new JSONObject(doInBackground(""));
            JSONObject thumbObj = everything.getJSONObject("tumblelog");
            title = thumbObj.getString("title");
        }
        catch (Exception e){
            e.printStackTrace();
        }
        return title;

    }
    private static String getStringFromInputStream(InputStream is) {

        BufferedReader br = null;
        StringBuilder sb = new StringBuilder();

        String line;
        try {

            br = new BufferedReader(new InputStreamReader(is));
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return sb.toString();

    }
}