HttpPost с использованием Scala - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь отправить строку JSON во внешний API, используя Scala.Не удалось получить правильный ответ.

Получение HTTP/1.1 400 Error как ответ на мой код ниже.Пробовал то же самое в Почтальоне, он дает 200 OK результат.

import org.apache.http.auth.{AuthScope, UsernamePasswordCredentials}
import org.apache.http.client.methods.HttpPost
import org.apache.http.entity.StringEntity
import org.apache.http.impl.client.{BasicCredentialsProvider, HttpClientBuilder}
import org.scalatest.{FunSpec, Matchers}

class MySpec extends FunSpec with Matchers {
  it("should return 200") {
    val extApi = "<external_api>"
    val extApiResponse = doExtApiPost(extApi)

    assert(extApiResponse.getStatusLine().getStatusCode().equals(200))
  }

  private def doExtApiPost(extApi: String) = {

    val httpPost = new HttpPost(extApi)

    val jsonString =
      """{
        |"field1": "<field1_info>",
        |"field2": "<field2_info>",
        |"field3": "<field3_info>"
        |}""".stripMargin

    httpPost.setEntity(new StringEntity(jsonString))
    httpPost.setHeader("Accept", "application/json")
    httpPost.setHeader("Content-type", "application/json")
    val username = "my_username"
    val password = "my_password"

    val credentialsProvider = new BasicCredentialsProvider()
    credentialsProvider.setCredentials(
      AuthScope.ANY,
      new UsernamePasswordCredentials(username, password)
    )

    val httpClient =  HttpClientBuilder.create().setDefaultCredentialsProvider(credentialsProvider).build()

    httpClient.execute(httpPost)
  }
}

Может кто-нибудь сказать, пожалуйста, что мне здесь не хватает?

1 Ответ

0 голосов
/ 14 июня 2019

Итак, API, который я пытаюсь опубликовать, не берет имя пользователя и пароль от BasicCredentialsProvider.Я должен был суффикс внешней ссылки API с тем же.Работает сейчас.

...