Android mobilde HttpClient tarafından bir sunucuya bir fotoğraf yüklemeyi denedim, ancak bazen bu hatayı alıyorum, her zaman olmayacak. Herkes bunu nasıl çözeceğini biliyor mu?HttpPost, "Tekrar edilebilir olmayan bir istek varlığı ile isteği yeniden deneme isteği" nedeniyle başarısız oldu
gibi kodum:
HttpClient client =new DefaultHttpClient();
HttpPut httpPut = new HttpPut(uploadUrl);
InputStream in =null;
HttpResponse response =null;
try {
in = new FileInputStream(filepath);
BasicHttpEntity entity = new BasicHttpEntity();
entity.setContent(in);
entity.setContentLength(new File(basepath+path).length());
httpPut.setEntity(entity);
response = client.execute(httpPut);
System.out.println(response.getStatusLine());
consume(response.getEntity());
}
.......
Hata bilgisi:
11-22 10:32:50.370: W/System.err(15224): org.apache.http.client.ClientProtocolException
11-22 10:32:50.370: W/System.err(15224): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:557)
11-22 10:32:50.370: W/System.err(15224): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
11-22 10:32:50.370: W/System.err(15224): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
11-22 10:32:50.370: W/System.err(15224): at com.hp.nimbus.android.skydrive.util.SkyDriveUtils_Rest.doUploadPhoto(SkyDriveUtils_Rest.java:203)
11-22 10:32:50.380: W/System.err(15224): at com.hp.nimbus.android.skydrive.util.SkyDriveUtils_Rest.uploadPhoto(SkyDriveUtils_Rest.java:250)
11-22 10:32:50.380: W/System.err(15224): at com.hp.nimbus.android.skydrive.FolderMonitorService$1.onEvent(FolderMonitorService.java:36)
11-22 10:32:50.380: W/System.err(15224): at android.os.FileObserver$ObserverThread.onEvent(FileObserver.java:125)
11-22 10:32:50.380: W/System.err(15224): at android.os.FileObserver$ObserverThread.observe(Native Method)
11-22 10:32:50.380: W/System.err(15224): at android.os.FileObserver$ObserverThread.run(FileObserver.java:88)
11-22 10:32:50.380: W/System.err(15224): Caused by: org.apache.http.client.NonRepeatableRequestException: Cannot retry request with a non-repeatable request entity
11-22 10:32:50.380: W/System.err(15224): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:419)
11-22 10:32:50.380: W/System.err(15224): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
11-22 10:32:50.390: W/System.err(15224): ... 8 more
Merhaba, cevabınız için teşekkürler. FileEntity'yi daha önce denedim, sorun şu ki, yükleme sunucusu FileEntity'yi desteklemiyor, FileInputStream'i kullanmalıyım. Ve ilk isteğin başarısız olduğunu belirttiniz, Bu başarısızlığın nedenini biliyor mu? – user1059217
"FileEntity" yi desteklemiyor tuhaf geliyor. Basit bir düzeltme için, varlığınızı bir BufferedHttpEntity içinde sarmalamayı deneyin. Bu, tekrarlanabilir hale getirecek, ancak bunu yaparken biraz daha fazla bellekte çiğnemeye çalışacaktır. – Jens