Ошибки React-native-uploader для Android - PullRequest
0 голосов
/ 15 сентября 2018

В настоящее время я пытаюсь отладить пакет реакции-натив (act-native-uploader ), который я использую, чтобы попытаться загрузить пакет файлов (фотографий). Несмотря на работу на 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 ]

0 голосов
/ 18 сентября 2018

Чтобы решить эту проблему, мне пришлось отказаться от пакета 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);
  });
0 голосов
/ 15 сентября 2018

HTTP 405 Метод не разрешен ... является ошибкой на стороне клиента.

Метод, полученный в строке запроса, известен серверу происхождения, но не поддерживается целевым ресурсом.

, если JavaScript работает, а Java - нет ... Возможно, вы ищете MultipartBuilder

... в сочетании с MediaType.FORM.

...