Ошибки React-native-uploader для Android
В настоящее время я пытаюсь отладить пакет реакции-натива ( реагировать-н-загрузчик), который я использую, чтобы попытаться загрузить пакет файлов (фотографий). Несмотря на работу на ios, текущая реализация возвращает следующую ошибку для Android:
Response{protocol=http/1.1, code=405, message=Method Not Allowed, url=${config.apiBase}/load/${this.props.id}/uploadconfirmation}
Ошибка происходит из этой строки в пакете:
Response response = client.newCall(request).execute();
Где клиент:
private final OkHttpClient client = new OkHttpClient()
Где запрос:
Request{method=POST, url=${config.apiBase}/load/${this.props.id}/uploadconfirmation, tag=null}
Я успешно сделал сообщения в конечную точку, используя formdata:
let tData = new FormData();
const that = this;
tData.append("confirmation_doc", {
uri: files[0].filepath,
type: "image/jpeg",
name: "confirmation_doc.jpg",
});
axios.post(
`${config.apiBase}/load/${this.props.id}/uploadconfirmation`,
tData
)
.then(response => {
Alert.alert(
"Success",
"Uploaded Successfully!",
[{ text: "OK", onPress: () => that.props.close() }],
{ cancelable: false }
);
});
Я попытался просмотреть исходный код, чтобы определить, где все разваливается, и кажется, что все публикуется как следует (заголовки выглядят хорошо, метод выглядит хорошо, конечная точка выглядит хорошо). Я не слишком знаком с Java, поэтому любой вклад будет оценен.
2 ответа
Чтобы решить эту проблему, мне пришлось отказаться от react-native-uploader
пакет, который я использовал. Ниже описано, как мне удалось решить проблему:
let tData = new FormData();
this.state.selectedImages.forEach((item, i) => {
tData.append("doc[]", {
uri: item.uri,
type: "image/jpeg",
name: item.filename || `filename${i}.jpg`,
});
});
fetch(`${config.apiBase}/load/${this.props.id}/uploadconfirmation`, {
method: "post",
headers: {
Accept: "application/x-www-form-urlencoded",
Authorization: `Token ${this.props.token}`,
},
body: tData,
})
.then(res => res.json())
.then(res => {
Alert.alert(
"Success",
"Uploaded Successfully!",
[{ text: "OK", onPress: () => that.props.close() }],
{ cancelable: false }
);
})
.catch(err => {
console.error("error uploading images: ", err);
});
Метод HTTP 405 Not Allowed ... является ошибкой на стороне клиента.
Метод, полученный в строке запроса, известен исходному серверу, но не поддерживается целевым ресурсом.
если JavaScript
работает, но Java
не... вы, возможно, ищете MultipartBuilder
... в комбинации с MediaType.FORM
,