安卓中HTTP Post方法的最大大小是多少?

19 浏览
0 Comments

安卓中HTTP Post方法的最大大小是多少?

安卓Post方法的最大尺寸是多少?当我从服务器获取响应时,部分消息丢失了。我觉得可能是达到了Post方法的最大尺寸。如果Post方法没有限制,那我是不是需要更改我的服务器规格?

0
0 Comments

理论上没有限制。POST响应大小限制为Java VM堆大小,这是与设备无关的。它可能比您的POST响应消耗更多。

你如何验证响应的一部分丢失了?如果你用LogCat打印出来或在调试模式下查看它,你只能看到以三个点结束的消息的开头部分(整个消息都在那里,不仅仅是显示给你的)。

为了解决这个问题,你可以尝试将响应保存到文件中,然后使用文件浏览器查看它,以确保整个响应都被正确接收。你也可以尝试使用更大的Java VM堆大小来增加POST响应的限制。

以下是一个示例代码,用于将响应保存到文件中:

private void saveResponseToFile(String response) {
    try {
        File file = new File(Environment.getExternalStorageDirectory(), "response.txt");
        FileWriter writer = new FileWriter(file);
        writer.write(response);
        writer.flush();
        writer.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

你可以在接收到响应后调用这个方法,然后使用文件浏览器查看保存的文件。

希望这些信息对你有所帮助!

0
0 Comments

最大的HTTP Post方法大小在Android中是由服务器的限制决定的。当发送的请求超过服务器所允许的大小时,可能会导致数据丢失或截断。为了解决这个问题,可以使用HttpURLConnection类和OutputStream来发送请求,并使用BufferedReader或InputStream来获取响应。

以下是一个示例代码,演示如何使用HttpURLConnection来发送请求和获取响应:

HttpURLConnection my_httpConnection = (HttpURLConnection) new URL("https://integrator-ut.vegaconnection.com/Authentication.svc?wsdl").openConnection();
my_httpConnection.setRequestMethod("POST");
my_httpConnection.setDoInput(true);
my_httpConnection.setDoOutput(true);
my_httpConnection.setRequestProperty("Content-type", "text/xml; charset=utf-8");
OutputStream my_outPutStream = this.my_httpConnection.getOutputStream();
Writer my_writer = new OutputStreamWriter(my_outPutStream);
my_writer.write(YOUR_REQUEST); //YOUR_REQUEST是一个字符串
my_writer.flush();
my_writer.close();
BufferedReader my_bufferReader = new BufferedReader(new InputStreamReader(this.my_httpConnection.getInputStream()));
char[] buffer = new char[10000];
int nbCharRead=0;
try {
    while((nbCharRead = my_bufferReader.read(buffer, 0, 10000)) != -1) {
        /* 处理响应数据:保存到文件/ArrayList等 */
    }
} catch (IOException e) {
    e.printStackTrace();
}

通过使用HttpURLConnection类和OutputStream来发送请求,可以避免使用HttpPost时可能出现的数据丢失问题。使用BufferedReader或InputStream来获取响应,可以确保获取完整的响应数据。

需要注意的是,以上代码中的YOUR_REQUEST需要替换为实际的请求内容。此外,还需要处理可能出现的IO异常。

使用以上方法,可以有效解决在Android中使用HTTP Post方法时可能遇到的数据丢失问题。

0