네트워크를 통해 상황에 따라 하나 이상의 파일을 전송해야하는 시나리오가 있습니다. 파일 크기는 700KB에서 900KB 사이입니다. 업로드가 완료되면 서버는 업로드 된 파일의 수와 관계없이 하나의 번호로 응답합니다. Base64로 변환 한 후 ksoap2 라이브러리로 업로드하려고했지만 실패했습니다. 내 비누 헤더 xml 크기의 크기가 1048000 정도의 문자를 쓰면 실패합니다.android에서 여러 파일을 업로드하는 방법
그런 다음 내 업로드 방식을 변경하고 HttpURLConnection 또는 http 클라이언트 중 하나를 사용하려고합니다. 내 시나리오에서 어느 것이 효율적인지 결정할 수 없습니다.
감사
다음코드를입니다
코드 :
InputStream is = getResources()
.openRawResource(R.raw.file_name);
int size = 0;
// Read the entire resource into a local byte buffer.
byte[] buffer = new byte[1024];
try {
while ((size = is.read(buffer, 0, 1024)) >= 0) {
baos.write(buffer, 0, size);
}
is.close();
buffer = baos.toByteArray();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
base64string = new String(Base64.encode(buffer, Base64.DEFAULT));
오류 난 당신이 사용하고자하는 서버의 종류를 잘 모릅니다
org.xmlpull.v1.XmlPullParserException: unexpected type (position:END_DOCUMENT [email protected]:1 in [email protected])
at org.kxml2.io.KXmlParser.nextTag(KXmlParser.java:2035)
at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:126)
at org.ksoap2.transport.Transport.parseResponse(Transport.java:63)
at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:100)
전송 최적화 메커니즘 (위키 백과) 그러나 issu에는 더 큰 파일이있다. 내가 큰 파일을 업로드 할 때 비누로 850KB라고 말하면 실패합니다. 서버 직원은 그 당시에 내 앱에서 주목한다고 말한다. – Calvin
그래서 실제로 서버에 액세스 할 수 없습니까? 서버가 어떻게 구성되어 있는지 알고 있습니까? 그것은 서버 문제처럼 들린다. 그럼에도 불구하고 당신은 내 제안을 시도 할 수 있습니다. – SunnySonic
PHP 서버입니다. webend를 통해 요청을 전달하려고 시도했지만 1MB 파일에서도 제대로 작동합니다. 나는 서버가 현재 SOAP를 사용하기 때문에 당신이 제안한 방법을 사용할 수 없다. 실제 데이터보다 먼저 인증 헤더와 모든 정보를 전달해야합니다. 그러나 모두 실패하면 관리자에게 서버 코드를 변경하여 그 목적을 달성 할 수 있도록 제안 할 수 있습니다. – Calvin