Java Web服务没有';t工作(安卓工作室)
所以我第一次尝试开发web服务,这对我来说真的很难。。。我只想得到一个包含整个JSON代码的字符串,但由于某种原因我没有得到它 AndroidManifest(忽略应用程序名称): Web服务类: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
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();
}
}