我在How can I make a simple HTTP request in MainActivity.java? (Android Studio)找到了一个简单的HTTP请求的工作代码,我将在下面发布它(如果我没有错,现在需要使用{{1}进行一些更改})。但我想问一下如何收到内容?我通过以下方式处理代码:
try{} catch{}
GetUrlContentTask
GetUrlContentTask req = new GetUrlContentTask();
req.execute("http://192.168.1.10/?pin=OFF1");
textView3.setText(req.doInBackground("http://192.168.1.10/?pin=OFF1"));
答案 0 :(得分:0)
将此添加到您的onPostExecute(String result)
来电
protected void onPostExecute(String result) {
// this is executed on the main thread after the process is over
// update your UI here
setMyData(result);
}
然后填写您需要更新的文本字段或其他任何数据。
private void setMyData(String result){
textView3.setText(result);
}
答案 1 :(得分:0)
你到底在哪里?您的代码大多正确,但您可能需要稍微重新排列。你的范围有点偏,你的注释代码几乎到了那里。见下文
protected String doInBackground(String... urls) {
String content = "", line = "";
HttpURLConnection httpURLConnection;
BufferedReader bufferedReader;
URL url;
try {
for(String uri : urls) {
url = new URL(uri);
url = new URI(url.toURI().getScheme(), url.getAuthority(), url.getPath(), "pin=" + URLEncoder.encode("&OFF1", "UTF-8"), null).toURL();
httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("GET");
httpURLConnection.setDoOutput(true);
httpURLConnection.connect();
bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
while ((line = bufferedReader.readLine()) != null) {
content += line + System.lineSeparator();
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
bufferedReader.close();
} catch(Exception e) {
e.printStackTrace();
}
}
return content;
}
这将返回页面的String表示形式。如果页面包含HTML,它将返回text / html,如果它包含文本,则只返回文本。
然后,作为之前的用户声明,您可以在GUI上设置响应
protected void onPostExecute(String result) {
textView3.setText(result);
}
以上示例在技术上将起作用。但是,我强烈建议使用http://loopj.com/android-async-http/而不是HttpURLConnection。你的代码会更好,这将是重要的。
我发给你的代码假设参数总是pin = OFF1,因为它更像是一个概念验证