HTTP 不工作
HTTP Get Not Working
编辑:对于我一开始问的问题有多糟糕,我感到非常抱歉,我非常沮丧和疲倦,但我知道这真的不是一个借口。无论如何,我编辑了它。我也已经在 Whosebug 论坛和其他论坛上看了很多,并尝试了他们的方法,但没有结果,所以我想这不是一个真正重复的问题。
经过数小时的尝试和使用多种方法后,我终于放弃并决定 post 这里的问题。令人沮丧的是我无法让它工作,它用于家庭自动化项目,学习 C 和 python 等新语言在处理这个项目时从来都不是问题,所以不让它工作是非常令人沮丧的。无论如何,这是代码:
public void buttonOnClick(View v) {
Button button = (Button) v;
((Button) v).setText("clicked");
// The request here
// The request here
// The request here
// The request here
}
这是一个简单的应用程序,只有一个按钮,应该向 192.168.0.150/main_light/switch 发送一个简单的 http get 请求。我知道这应该有效,因为我一直在 Tasker 中为此使用 HTTP GET(它在 Python 中有效)。我真的希望有人能在这里帮助我,谢谢!
P.S。我知道这里仍然有一些无用的操作,我是一个 JAVA 新手,决定在我最终可以正常工作之前不做任何事情。
尝试使用 http://square.github.io/okhttp/
把代码放在这里:
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
OkHttpClient client = new OkHttpClient();
String run(String url) throws IOException {
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
}
});
使用HttpURLConnection
实现同样的效果:
String serverURL = "http://192.168.0.150/main_light/switch";
URL url = new URL(serverURL);
HttpURLConnection connection = null;
try {
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
//Do something with this InputStream
// handle the response
int status = connection.getResponseCode();
// If response is not success
if (status != 200) {
throw new IOException("Post failed with error code " + status);
}
} catch (Exception e) {
Log.e(TAG,e.toString());
} finally {
if(connection != null)
connection.disconnect();
}
希望对您有所帮助!
使用这个方法:
public static int get(String url) throws Exception {
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
//consume response if any;
}
in.close();
return responseCode;
}
如果需要,请执行请求的消费。
编辑:对于我一开始问的问题有多糟糕,我感到非常抱歉,我非常沮丧和疲倦,但我知道这真的不是一个借口。无论如何,我编辑了它。我也已经在 Whosebug 论坛和其他论坛上看了很多,并尝试了他们的方法,但没有结果,所以我想这不是一个真正重复的问题。
经过数小时的尝试和使用多种方法后,我终于放弃并决定 post 这里的问题。令人沮丧的是我无法让它工作,它用于家庭自动化项目,学习 C 和 python 等新语言在处理这个项目时从来都不是问题,所以不让它工作是非常令人沮丧的。无论如何,这是代码:
public void buttonOnClick(View v) {
Button button = (Button) v;
((Button) v).setText("clicked");
// The request here
// The request here
// The request here
// The request here
}
这是一个简单的应用程序,只有一个按钮,应该向 192.168.0.150/main_light/switch 发送一个简单的 http get 请求。我知道这应该有效,因为我一直在 Tasker 中为此使用 HTTP GET(它在 Python 中有效)。我真的希望有人能在这里帮助我,谢谢!
P.S。我知道这里仍然有一些无用的操作,我是一个 JAVA 新手,决定在我最终可以正常工作之前不做任何事情。
尝试使用 http://square.github.io/okhttp/
把代码放在这里:
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
OkHttpClient client = new OkHttpClient();
String run(String url) throws IOException {
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
}
});
使用HttpURLConnection
实现同样的效果:
String serverURL = "http://192.168.0.150/main_light/switch";
URL url = new URL(serverURL);
HttpURLConnection connection = null;
try {
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
//Do something with this InputStream
// handle the response
int status = connection.getResponseCode();
// If response is not success
if (status != 200) {
throw new IOException("Post failed with error code " + status);
}
} catch (Exception e) {
Log.e(TAG,e.toString());
} finally {
if(connection != null)
connection.disconnect();
}
希望对您有所帮助!
使用这个方法:
public static int get(String url) throws Exception {
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
//consume response if any;
}
in.close();
return responseCode;
}
如果需要,请执行请求的消费。