Android Studio 关于 HttpURLConnection
AndroidStudio about HttpURLConnection
这是我的方法!
private String logInActivity() {
String userID = idText.getText().toString();
String userPW = pwText.getText().toString();
final String SERVER = "http://115.145.241.151:8080/AndroidCommunication/LoginActivity.jsp";
if (userID != null && userPW != null) {
final String QUERY = "?id=" + userID + "&pw=" + userPW;
HttpURLConnection connection = null;
URL url = null;
try {
url = new URL(SERVER+QUERY);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
InputStream is = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = reader.readLine();
return line;
} catch (Exception e) {
e.printStackTrace();
return "3";
}
} else {
Toast.makeText(GetReview.this, "Type all required info", Toast.LENGTH_SHORT).show();
return "2";
}
}
我只是在练习 HttpURLConnection(通过获取方法)。我知道我不应该像这样发送密码或 ID,但我只是在练习。但我只是不明白为什么会出现异常。请帮忙!
我没有输入我的地址或任何错误,因为我试过了,而且服务器是开着的。我调试了它和 connection.connect();好像不行。
我的 onCreate 开始:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_get_review);
pwText = findViewById(R.id.pwText);
idText = findViewById(R.id.idText);
resultText = findViewById(R.id.resultText);
findViewById(R.id.btnLogin).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new LoginAsyncTask().execute(logInActivity());
}
});
}
问题是 android 不允许在主线程上发出 HTTP 请求。这就是您收到 NetworkOnMainThreadException
异常的原因。要解决此问题,您可以使用 IntentService
为您完成这项工作,然后将结果广播回接收器(您的 activity)。
如果您对 android 服务了解不多,请阅读文档,您会发现自己会一次又一次地使用它们...
https://developer.android.com/guide/components/services#CreatingAService
这是我的方法!
private String logInActivity() {
String userID = idText.getText().toString();
String userPW = pwText.getText().toString();
final String SERVER = "http://115.145.241.151:8080/AndroidCommunication/LoginActivity.jsp";
if (userID != null && userPW != null) {
final String QUERY = "?id=" + userID + "&pw=" + userPW;
HttpURLConnection connection = null;
URL url = null;
try {
url = new URL(SERVER+QUERY);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
InputStream is = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = reader.readLine();
return line;
} catch (Exception e) {
e.printStackTrace();
return "3";
}
} else {
Toast.makeText(GetReview.this, "Type all required info", Toast.LENGTH_SHORT).show();
return "2";
}
}
我只是在练习 HttpURLConnection(通过获取方法)。我知道我不应该像这样发送密码或 ID,但我只是在练习。但我只是不明白为什么会出现异常。请帮忙! 我没有输入我的地址或任何错误,因为我试过了,而且服务器是开着的。我调试了它和 connection.connect();好像不行。
我的 onCreate 开始:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_get_review);
pwText = findViewById(R.id.pwText);
idText = findViewById(R.id.idText);
resultText = findViewById(R.id.resultText);
findViewById(R.id.btnLogin).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new LoginAsyncTask().execute(logInActivity());
}
});
}
问题是 android 不允许在主线程上发出 HTTP 请求。这就是您收到 NetworkOnMainThreadException
异常的原因。要解决此问题,您可以使用 IntentService
为您完成这项工作,然后将结果广播回接收器(您的 activity)。
如果您对 android 服务了解不多,请阅读文档,您会发现自己会一次又一次地使用它们...
https://developer.android.com/guide/components/services#CreatingAService