2017-01-31 2 views
1

Я пытаюсь загрузить файл изображения на сервер из приложения Android, которое я разработал, но ответ с сервера был следующим кодом html:Ошибка при загрузке файла изображения на сервер из приложения Android

<!DOCTYPE html> 
<html> 
<head> 
<meta name=“viewport” content=“width=device-width,initial-scale=1”> 
<meta charset=“utf-8”> 
<title>Application error</title> 
<style media=“screen”> 
html,body,iframe{ 
margin:0; 
padding:0; 
} 
html,body{height:100%; 
overflow:hidden;} 
iframe{width:100%; 
height:100%: 
border:0; 
} 
</style> 
</head> 
</body> 
<iframe src=“//www.herokucdn.com/error-pages/application-error.html”> </iframe> 
</body> 
</html> 

следующий код был написан на андроид стороне для загрузки:

final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png"); 

RequestBody req = new MultipartBody.Builder() 
        .setType(MultipartBody.FORM) 
        .addFormDataPart("userId", "1") 
        .addFormDataPart("image",sourceFile.getName(), RequestBody.create(MEDIA_TYPE_PNG, sourceFile)) 
        .addFormDataPart("landmark","xyx") 
        .addFormDataPart("location","234124351245sdfgsdfb") 
        .build(); 

Request request = new Request.Builder() 
        .url("https://cyc-new.herokuapp.com/uploads/img_upload/") 
        .post(req) 
        .header("Authorization",credentials) 
        .build(); 
+0

Похоже, что ваш сервер не реагирует. Вы пробовали поражать конечную точку сервера (циклический) за пределами кода Java ... например, с помощью ролика или javascript? –

+0

@mrrogers Я не тестировал ** curl **, но я тестировал ** библиотеку запросов Python **, и это было успешным. Вот мой код Python; '' запросы на импорт'' '' из request.auth import HTTPBasicAuth'' '' url = 'https: // cyc-new.herokuapp.com/uploads/img_upload /' '' '' filess = {' image ': open (' a1.png ',' rb ')} '' '' r = request.post (url, data = {' userID ': 5,' landmark ':' test1 ',' location ': 'test2'}, auth = HTTPBasicAuth ('admin', 'admin'), files = filess) '' –

ответ

0

Попробуйте добавить заголовок в запросе строителя, который определяет тип содержимого данных. Например,

Request request = new Request.Builder() 
       .url("https://cyc-new.herokuapp.com/uploads/img_upload/") 
       .post(req) 
       .header("Content-Type", "application/x-www-form-urlencoded; charset=utf-8") 
       .header("Authorization",credentials) 
       .build(); 
+0

Пробовали использовать заголовок («Content-Type», «application/x-www-form-urlencoded; charset = utf -8 "), но ответ такой же. –

Смежные вопросы