Вопрос

Я пытаюсь отправить файлы в Blobstore, используя HTTP-запросы.

Сначала я сделал кнопку, чтобы вызвать createuploadurl, чтобы получить URL-адрес загрузки.

Тогда я сделал клиента:

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(URL_FROM_CREATEUPLOADURL);

httpPost.setEntity(new StringEntity("value1"));
HttpResponse httpResponse = httpClient.execute(httpPost);

Но у меня есть 2 проблемы:

  • В режиме Dev: когда я запускаю ответные ответы на IT-ответы, «должен позвонить один из Set * Blobstorage First».

  • Если я загрузку приложению: URL-адрес меняется каждый раз, когда я звоню, поэтому, когда я запускаю клиента IT-ответы «HTTP / 1.1 500 Ошибка сервера»

Что я делаю не так?

Это было полезно?

Решение 2

Видимо, сущность должна быть многоуровневой.

Это клиентский код, чтобы получить URL:

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(myDomain/mayServlet);
HttpResponse httpResponse = httpClient.execute(httpPost);
Header[] headers = httpResponse.getHeaders(myHeader);
for (int i = 0; i < headers.length; i++) {
Header header = headers[i];
if(header.getName().equals(myHeader))
uploadUrl = header.getValue();

Это серверный код для возврата URL:

BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
String uploadUrl = blobstoreService.createUploadUrl(requestHandlerServlet);
resp.addHeader("uploadUrl", uploadUrl);

Это код загрузки клиента:

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(uploadUrl);
MultipartEntity httpEntity = new MultipartEntity();
ContentBody contentBody = new FileBody(new File("filePath/fileName"));
httpEntity.addPart("fileKey", contentBody);
httpPost.setEntity(httpEntity);
HttpResponse httpResponse = httpClient.execute(httpPost);

так просто... :(

Другие советы

Похоже, вы пытаетесь сложить жесткий код URL загрузки. Вы не можете сделать это - вам нужно создать новый для каждого файла, который вы хотите загрузить.

Вам также необходимо убедиться, что вы загружаете файл в виде Multipart Message, а не использовать Formencoding или Roam Body. Я не знаком с API Java, но похоже, что вы устанавливаете сырой кузов запроса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top