gpt4 book ai didi

java - Android 应用程序 - onCreateView 中的 HttpURLConnection

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

我刚开始学习开发android应用程序,我需要调用一个URL来获取JSON响应。

这是我的java类:-

public class SpeakersFragment extends Fragment {

List<String> titles;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {



View view = inflater.inflate(R.layout.fragment_speakers, container, false);

initData();
RecyclerView rv = (RecyclerView)view.findViewById(R.id.info_speaker_recycler);
rv.setHasFixedSize(true);
LinearLayoutManager llm = new LinearLayoutManager(getActivity());
rv.setLayoutManager(llm);
RecyclerAdapter adapter = new RecyclerAdapter(getActivity(), titles);
rv.setAdapter(adapter);

new GetSpeakersList().execute(URL);

return view;
}


public class GetSpeakersList extends AsyncTask<String , Void ,String> {
String server_response;

@Override
protected String doInBackground(String... strings) {

URL url;
HttpURLConnection urlConnection = null;

try {
url = new URL(strings[0]);
urlConnection = (HttpURLConnection) url.openConnection();

int responseCode = urlConnection.getResponseCode();

if(responseCode == HttpURLConnection.HTTP_OK){
server_response = readStream(urlConnection.getInputStream());
Log.v("CatalogClient", server_response);
}

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

return null;
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);

Log.e("Response", "" + server_response);


}
}

private String readStream(InputStream in) {
BufferedReader reader = null;
StringBuffer response = new StringBuffer();
try {
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while ((line = reader.readLine()) != null) {
response.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return response.toString();
}

当我检查日志时,根本没有响应。我尝试创建一个新项目,如果我在 onCreate() 而不是 onCreateView 中调用 GetSpeakersList,它工作正常。

可以指导我如何让它工作吗?谢谢!

最佳答案

对于持续的网络请求,使用 AsyncTask 可能会非常麻烦:尝试使用流行的、支持良好的网络库:这里有两个流行的:

1) Retrofit

2) Volley

关于java - Android 应用程序 - onCreateView 中的 HttpURLConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45291090/

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