Guia de Início Rápido OkHttp enviar uma solicitação POST

Nota do Tradutor: https: artigo //www.baeldung.com/ é uma qualidade muito elevada do local de tecnologia de Inglês, os alunos interessados ​​podem ir para a aprendizagem de acesso.

1 Introdução

Este artigo irá apresentar OkHttp uso básico do cliente.

Neste breve artigo técnico, vamos destacar uma maneira diferente OkHttp 3.x versão Publicar para enviar o pedido.

2 substancialmente pedido POST

Podemos usar FormBody.Builder estrutura básica requestBody , contém dois parâmetros: nome de usuário, senha, envie um pedido POST.

@Test
public void whenSendPostRequest_thenCorrect() 
  throws IOException {
    RequestBody formBody = new FormBody.Builder()
      .add("username", "test")
      .add("password", "test")
      .build();
 
    Request request = new Request.Builder()
      .url(BASE_URL + "/users")
      .post(formBody)
      .build();
 
    Call call = client.newCall(request);
    Response response = call.execute();
     
    assertThat(response.code(), equalTo(200));

3 com uma autorização de pedido POST

Se você quiser autenticação pedido, você pode usar o construtor Credentials.basic para adicionar credenciais para o cabeçalho do pedido.

O código a seguir mostra um exemplo de transmitir uma seqüência de solicitação com o corpo autorizado Cordas:

@Test
public void whenSendPostRequestWithAuthorization_thenCorrect() 
  throws IOException {
    String postBody = "test post";
     
    Request request = new Request.Builder()
      .url(URL_SECURED_BY_BASIC_AUTHENTICATION)
      .addHeader("Authorization", Credentials.basic("username", "password"))
      .post(RequestBody.create(
        MediaType.parse("text/x-markdown), postBody))
      .build();
 
    Call call = client.newCall(request);
    Response response = call.execute();
 
    assertThat(response.code(), equalTo(200));
}

modo de transmissão de dados 4 POST JSON

Para transmitir o JSON pedido corpo, ele deve definir o tipo de mídia aplicação arquivo / JSON . Podemos usar o construtor RequestBody.create para construção:

@Test
public void whenPostJson_thenCorrect() throws IOException {
    String json = "{\"id\":1,\"name\":\"John\"}";
 
    RequestBody body = RequestBody.create(
      MediaType.parse("application/json"), json);
 
    Request request = new Request.Builder()
      .url(BASE_URL + "/users/detail")
      .post(body)
      .build();
  
    Call call = client.newCall(request);
    Response response = call.execute();
 
    assertThat(response.code(), equalTo(200));
}

pedido 5 Multipart POST

Para enviar um pedido Multipart Post, precisamos RequestBody construído como um MultipartBody para publicar documentos, nomes de usuário e senhas solicitação POST:

@Test
public void whenSendMultipartRequest_thenCorrect() 
  throws IOException {  
    RequestBody requestBody = new MultipartBody.Builder()
      .setType(MultipartBody.FORM)
      .addFormDataPart("username", "test")
      .addFormDataPart("password", "test")
      .addFormDataPart("file", "file.txt",
        RequestBody.create(MediaType.parse("application/octet-stream"), 
          new File("src/test/resources/test.txt")))
      .build();
 
    Request request = new Request.Builder()
      .url(BASE_URL + "/users/multipart")
      .post(requestBody)
      .build();
 
    Call call = client.newCall(request);
    Response response = call.execute();
 
    assertThat(response.code(), equalTo(200));
}

codificação de caracteres 6 padrão sem enviar pedido POST

codificação de caracteres padrão Okhttp é UTF-8:

@Test
public void whenPostJsonWithoutCharset_thenCharsetIsUtf8() throws IOException {
    final String json = "{\"id\":1,\"name\":\"John\"}";
 
    final RequestBody body = RequestBody.create(
        MediaType.parse("application/json"), json);
 
    String charset = body.contentType().charset().displayName();
 
    assertThat(charset, equalTo("UTF-8"));
}

Se nós queremos usar outras codificações de caracteres, podemos usá-lo como MediaType.parse () O segundo parâmetro passado:

@Test
public void whenPostJsonWithUtf16Charset_thenCharsetIsUtf16() throws IOException {
    final String json = "{\"id\":1,\"name\":\"John\"}";
 
    final RequestBody body = RequestBody.create(
        MediaType.parse("application/json; charset=utf-16"), json);
 
    String charset = body.contentType().charset().displayName();
 
    assertThat(charset, equalTo("UTF-16"));
}

7 resumo

Neste ensaio, damos alguns exemplos de uso pedido OkHttp POST enviada pelo cliente.

Como de costume, o código de exemplo neste artigo foi publicado no GitHub diante.

Publicado 379 artigos originais · Louvor obteve 862 · Visualizações 1,32 milhão +

Acho que você gosta

Origin blog.csdn.net/w605283073/article/details/103797118
Recomendado
Clasificación