从站点获取 json 数据时出现问题
Problems in getting json data from site
所以我正在使用 okHttp 客户端从站点获取一些天气数据。到目前为止,我编写代码只是为了获取 json 数据并显示它,但我没有像我检查 url 两次那样获取 data.By 并且它有效。代码如下:
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.squareup.okhttp.Call;
import com.squareup.okhttp.Callback;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import java.io.IOException;
public class MainActivityFragment extends Fragment {
public MainActivityFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
OkHttpClient client = new OkHttpClient();
final TextView tv = (TextView)rootView.findViewById(R.id.display_json_data);
Request request = new Request.Builder().url("http://api.openweathermap.org/data/2.5/forecast/daily?q=94043&mode=json&units=metric&cnt=7&APPID=c82bfbedf3241dd88e356bffea122761").build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
String jsonData = response.body().string();
tv.setText(jsonData);
}
});
return rootView;
}
}
我已经在清单中添加了所需的权限。当我在我的设备上 运行 时,我没有得到任何输出。请帮忙
你可以试试这个。
Response response = client.newCall(request).execute();
return response.body().string();
权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
在 AndroidManifest:
中检查您的 权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
您可以使用 UI 线程 "runOnUiThread":
OkHttpClient client = new OkHttpClient();
final TextView tv = (TextView) findViewById(R.id.display_json_data);
Request request = new Request.Builder().url("http://api.openweathermap.org/data/2.5/forecast/daily?q=94043&mode=json&units=metric&cnt=7&APPID=c82bfbedf3241dd88e356bffea122761").build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
final String jsonData = response.body().string();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
tv.setText(jsonData);
}
});
}
});
所以我正在使用 okHttp 客户端从站点获取一些天气数据。到目前为止,我编写代码只是为了获取 json 数据并显示它,但我没有像我检查 url 两次那样获取 data.By 并且它有效。代码如下:
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.squareup.okhttp.Call;
import com.squareup.okhttp.Callback;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import java.io.IOException;
public class MainActivityFragment extends Fragment {
public MainActivityFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
OkHttpClient client = new OkHttpClient();
final TextView tv = (TextView)rootView.findViewById(R.id.display_json_data);
Request request = new Request.Builder().url("http://api.openweathermap.org/data/2.5/forecast/daily?q=94043&mode=json&units=metric&cnt=7&APPID=c82bfbedf3241dd88e356bffea122761").build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
String jsonData = response.body().string();
tv.setText(jsonData);
}
});
return rootView;
}
}
我已经在清单中添加了所需的权限。当我在我的设备上 运行 时,我没有得到任何输出。请帮忙
你可以试试这个。
Response response = client.newCall(request).execute();
return response.body().string();
权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
在 AndroidManifest:
中检查您的 权限<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
您可以使用 UI 线程 "runOnUiThread":
OkHttpClient client = new OkHttpClient();
final TextView tv = (TextView) findViewById(R.id.display_json_data);
Request request = new Request.Builder().url("http://api.openweathermap.org/data/2.5/forecast/daily?q=94043&mode=json&units=metric&cnt=7&APPID=c82bfbedf3241dd88e356bffea122761").build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
final String jsonData = response.body().string();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
tv.setText(jsonData);
}
});
}
});