Как правильно изменить тип содержимого http-запроса в Java? - PullRequest
0 голосов
/ 17 января 2019

У меня есть этот код для загрузки вложения с помощью API servicenow:

public static void main(String[] args) {
  try {

                  //Add needed headers
                  Header header = new BasicHeader(HttpHeaders.CONTENT_TYPE, "image/jpeg");
                  Header header2 = new BasicHeader(HttpHeaders.ACCEPT, "application/json");
                  List<Header> headers = new ArrayList<Header>();
                  headers.add(header);
                  headers.add(header2);

                  //Add credential
              CredentialsProvider provider = new BasicCredentialsProvider();
                  UsernamePasswordCredentials credentials     = new UsernamePasswordCredentials("yourUserName", "yourPassword");
                  provider.setCredentials(AuthScope.ANY, credentials);
                  CloseableHttpClient client = HttpClientBuilder.create()
                                                                          .setDefaultCredentialsProvider(provider)
                                                                          .setDefaultHeaders(headers)
                                                                          .build();

                  HttpPost post = new HttpPost("https://yourInstanceName/api/now/attachment/file?table_name=incident&table_sys_id=c8c3ba6643333a4073a1433e0210c706&file_name=Tulips.jpg");
                  String textFileName = "C:/Users/Public/Pictures/Sample Pictures/Tulips.jpg";
                  byte[] fileBytes = getBytes(textFileName);
                  post.setEntity(new ByteArrayEntity(fileBytes));
                  ResponseHandler<String> responseHandler=new BasicResponseHandler();
                  String responseBody = client.execute(post, responseHandler);
                  System.out.println(responseBody);
            } catch (Exception e) {

  e.printStackTrace();

}
  }

  private static byte[] getBytes(String filepath) throws Exception{
                  File file = new File(filepath);
                  //init array with file length
                  byte[] bytesArray = new byte[(int) file.length()];

                  FileInputStream fis = new FileInputStream(file);
                  fis.read(bytesArray); //read file into bytes[]
                  fis.close();

                  return bytesArray;
          }

Это работает так, как должно, но когда я пытаюсь загрузить CSV-файл, оно не работает.

Я изменил файл с помощью CSV, изменил имя файла в URL и изменил тип содержимого на «text / csv».

Что я должен изменить, чтобы сделать эту работу?

1 Ответ

0 голосов
/ 17 января 2019

Ваш запрос имеет другой тип контента, если вы хотите загружать файлы, поэтому вы должны использовать многочастный запрос. См. Что такое http multipart request?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...