安卓中HTTP Post方法的最大大小是多少?
理论上没有限制。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(); } }
你可以在接收到响应后调用这个方法,然后使用文件浏览器查看保存的文件。
希望这些信息对你有所帮助!
最大的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方法时可能遇到的数据丢失问题。