Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对服务器的http调用在浏览器中工作,但在android中返回响应代码500和文件未找到错误_Java_Android_Jsp_Http - Fatal编程技术网

Java 对服务器的http调用在浏览器中工作,但在android中返回响应代码500和文件未找到错误

Java 对服务器的http调用在浏览器中工作,但在android中返回响应代码500和文件未找到错误,java,android,jsp,http,Java,Android,Jsp,Http,我想知道是否有人能帮助我走上调试的正确轨道。我有一个android设备,它正在向服务器进行http调用,该服务器应该向android设备返回一个字符串响应。当我在浏览器中进行http调用时,它正在工作。当我在android应用程序中创建它时,它返回“文件未找到异常” 在Android设备上,当从服务器获取响应代码时,它返回500(内部服务器错误),但同样,我的http调用在浏览器中工作 我的服务器在jsp页面中接收http请求,该请求转换为servlet,然后tomcat服务器工作(转换为jav

我想知道是否有人能帮助我走上调试的正确轨道。我有一个android设备,它正在向服务器进行http调用,该服务器应该向android设备返回一个字符串响应。当我在浏览器中进行http调用时,它正在工作。当我在android应用程序中创建它时,它返回“文件未找到异常”

在Android设备上,当从服务器获取响应代码时,它返回500(内部服务器错误),但同样,我的http调用在浏览器中工作

我的服务器在jsp页面中接收http请求,该请求转换为servlet,然后tomcat服务器工作(转换为java类和机器代码),然后生成生成的HTML代码,然后将其发送回浏览器

我对服务器非常陌生,所以我不知道如何调试我的服务器中发生的事情,当一切都在浏览器中运行时,这些事情可能会导致android出错

可能导致这种情况的问题有哪些?如何开始调试?

以下是我在Android中进行http调用的代码,它运行在一个单独的线程上:

URL url = new URL(uri);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.setRequestProperty("Content-Type", "text/plain; charset=utf-8");
urlConnection.setRequestProperty("Expect", "100-continue");
urlConnection.connect();

int responseCode = urlConnection.getResponseCode(); //can call this instead of con.connect()
if (responseCode >= 500 && responseCode <= 599) {

    throw new Exception("Response Code from Server: " + responseCode); 

   }

else {

    BufferedReader in = new BufferedReader(new   InputStreamReader(url.openStream()));
    result = "";
    String inLine;


    while ((inLine = in.readLine()) != null) {
        result += inLine;
    }

    in.close();

    Log.d("MainActivity", "IP Address is: " + result);

    }
URL=newurl(uri);
HttpURLConnection urlConnection=(HttpURLConnection)url.openConnection();
urlConnection.setRequestMethod(“GET”);
urlConnection.setDoOutput(true);
setRequestProperty(“内容类型”,“文本/普通;字符集=utf-8”);
setRequestProperty(“Expect”,“100 continue”);
urlConnection.connect();
int responseCode=urlConnection.getResponseCode()//可以调用此函数而不是con.connect()

如果(responseCode>=500&&responseCode可能您正在尝试连接
localhost
127.0.0.1

这对于在浏览器(桌面)中使用很好,但是对于移动应用程序,您必须使用
10.0.2.2


值得一提的是,您可以使用几行代码来使用和执行HTTP请求。

尝试删除这两行代码:

urlConnection.setRequestProperty("Content-Type", "text/plain; charset=utf-8");
urlConnection.setRequestProperty("Expect", "100-continue");

如果您不同时发送请求正文,则使用这些命令是无效的。您只想执行一个简单的GET请求。

尝试连接到localhost时会出现超时异常,而不是500。不幸的是,当我删除这两行命令时,它仍然无法工作。我仍然从服务器获得相同的500响应代码。5xx错误表示错误在服务器端(4xx在客户端)。请检查服务器日志以了解出现了什么问题。可能服务器希望设置一些标题,或者您正在调用导致服务器出现错误的特定URL。另外:在URL中,请确保您使用URLEncoder正确地对所有可能包含非URL有效字符的参数进行URLEncode。是否可以更具体地说明您看到的位置“找不到文件异常"?这是一个服务器异常,导致客户端出现500错误吗?如果是这种情况,那么您知道问题是什么:应用程序请求的文件名不存在,导致服务器崩溃。请修复服务器以处理404错误,并确保在客户端传递正确的文件名。@BladeCoder是的,文件名不是f我的android日志猫中抛出了一个异常,但找不到的文件是一个连接到服务器上servlet的文件。我将研究这个。。。