gpt4 book ai didi

java - Tomcat 连接上 AVD 中的奇怪 FileNotFoundException

转载 作者:行者123 更新时间:2023-11-28 22:11:52 29 4
gpt4 key购买 nike

我的 android servlet 旨在通过 Apache Tomcat 服务器上的 tomcat servlet 发布请求和接收响应。为了进行调试,我使用相同的 POST 和 GET 方法设置了 Servlet,这样我就可以通过浏览器尝试功能和可访问性。

长话短说:当我部署应用程序时,我可以通过 10.0.2.2:8080/my_app?request=test 从 AVD 设备浏览器轻松访问它,并得到一个结果那很好。使用 localhost:8080/my_app?request=test 从我的机器访问也是如此。但是当我在我的应用程序中尝试时,我总是得到一个 java.io.FileNotFoundException: http://10.0.2.2:8080/my_app。为什么?

到目前为止我尝试了什么:该应用程序具有互联网权限并且它们也可以工作,为了到达 Servlet 通信点,我必须先通过 PHP 通过登录程序,并且它在同一台服务器上并且正常工作.

我的 AsyncTask 连接到 servlet 看起来像这样:

        AsyncTask<Void,Void,String> getDBdata = new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... params) {
URL url = null;
try {
url = new URL("http://10.0.2.2:8080/my_app");
} catch (MalformedURLException e) {
e.printStackTrace();
}
String text;
text = null;
JsonArray js = null;
try {
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("action", "getDBData");
connection.setDoInput(true);
connection.connect();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder builder = new StringBuilder();
String aux = "";

while ((aux = in.readLine()) != null) {
builder.append(aux);
}
text = builder.toString();
} catch (IOException e) {
e.printStackTrace();
}
return text;

最佳答案

好吧,当然我一直在尝试在 header 中发送参数,这导致了 BS。菜鸟错误!

bcody 的回答来自 this question在调试方面帮了我很多!此外,查看 servlet 中的服务器协议(protocol)可能会导致我更早地遇到错误。

这是最终有效的代码:

AsyncTask<Void,Void,String> getDBdata = new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... params) {
URL url = null;
try {
url = new URL(Constants.SERVER_URL + getDBdataURL);
} catch (MalformedURLException e) {
e.printStackTrace();
}
String text;
text = null;
try {
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Accept-Charset", "UTF-8");
connection.setRequestProperty("User-Agent", "Mozilla/5.0 ( compatible ) ");
connection.setRequestProperty("Accept", "*/*");
connection.setChunkedStreamingMode(0);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.setDoOutput(true);
connection.setRequestMethod("POST");
String request = "action=getDBdata";
PrintWriter pw = new PrintWriter(connection.getOutputStream());
pw.print(request);
pw.close();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
StringBuilder builder = new StringBuilder();
String aux = "";
while ((aux = in.readLine()) != null) {
builder.append(aux);
}
text = builder.toString();
} catch (IOException e) {
e.printStackTrace();
}
return text;
}

关于java - Tomcat 连接上 AVD 中的奇怪 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32765425/

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