Dominando o CLIENT HTTP do JAVA 11!

Поделиться
HTML-код
  • Опубликовано: 9 янв 2025

Комментарии • 42

  • @wldomiciano
    @wldomiciano 2 года назад +1

    Valeu, Rinaldo. Excelente explicação, cobriu bastante coisa.
    Por volta do instante 17:19 vc comenta sobre quão horrível é colocar o try-catch ali. Eu queria saber como seria uma forma mais elegante de lidar com esta situação.
    Será que se eu criasse um método separado e dentro dele tratar a exceção devolvendo um array de bytes vazio já seria suficiente? Seria algo assim:
    static byte[] convertToString(InputStream value) {
    try {
    return value.readAllBytes();
    } catch (IOException e) {
    return new byte[0];
    }
    }
    E usaria assim:
    client
    .sendAsync(request, BodyHandlers.ofInputStream())
    .thenApply(HttpResponse::body)
    .thenApply(Application::convertToString);

    • @rinaldodev
      @rinaldodev  2 года назад +1

      Fala, Wellington! Essa é uma opção boa. Pode estar em uma classe utilitária também, se você acabar fazendo isso demais.

    • @wldomiciano
      @wldomiciano 2 года назад

      @@rinaldodev Beleza, então. Muito obrigado pela resposta!

  • @luan252518
    @luan252518 2 года назад +1

    Feliz Natal! Poderia fazer um conteudo sobre SSL e Certificados!

    • @rinaldodev
      @rinaldodev  2 года назад +1

      Boa sugestão!

    • @luan252518
      @luan252518 2 года назад

      ​@@rinaldodev trabalho como dev Back-End do Santander e temos que integrar com alguns fornecedores que utilizam essa camada de proteção, ensino e apoio meus devs na integração, mas seria legal ter um conteudo avançado e bem explicado que nem voce consegue fazer! para passar para eles!

  • @lucas_couto
    @lucas_couto 6 месяцев назад

    Show

  • @MrIngridSilva
    @MrIngridSilva Год назад +2

    Sensacional!
    Ansiosa para o panorama java 12 à 19☺

  • @brunosoares6657
    @brunosoares6657 Год назад +1

    Mais 1 inscrito, excelente conteudo!

  • @luarapavam4646
    @luarapavam4646 Год назад

    Ola Rinaldo primeiramente muito obrigado pela ajuda...gostaria de saber uma coisa essa resposta em json eu consigo colocar ela dentro de atributos de uma classe

  • @marcosgarcia179
    @marcosgarcia179 3 года назад +1

    excelente

  • @pedromedeiros6907
    @pedromedeiros6907 3 года назад +1

    Rinaldo, em 17:13 você diz que não é indicado colocar esse try catch, então, de que forma o tratamento dessa exceção deveria ser realizado?

    • @rinaldodev
      @rinaldodev  3 года назад +1

      Fala, Pedro! Na verdade pode fazer o try-catch, só fica ruim a sintaxe assim, em linha. é melhor criar um método, ou bloco lambda, com esse conteúdo dentro e separado, aí você só chama ele aí nesse ponto.

  • @samuelffn2
    @samuelffn2 2 года назад

    Fantástico o vídeo, parabéns.
    Estou com uma dúvida, quando eu preciso usar alguns Headers, como Connection, Content-Length ele me retorna um erro, por exemplo: restricted header name: "Content-Length". Como resolver para usar esses cabeçalhos proibidos?
    Obrigado, abraço

    • @rinaldodev
      @rinaldodev  2 года назад +1

      Teoricamente esses headers não precisam ser aplicados manualmente pelo programador, e por isso são restritos. O cliente HTTP preenche esses headers com os valores corretos.
      Caso você ainda assim queira sobrescrever esse comportamento (e pode ter erros por conta disso), a partir do Java 12 foi criada uma propriedade que permite isso: jdk.httpclient.allowRestrictedHeaders
      Você pode definir a propriedade ao executar a aplicação ou programaticamente com:
      System.setProperty("jdk.httpclient.allowRestrictedHeaders", "Connection,Content-Length");

    • @samuelffn2
      @samuelffn2 2 года назад

      @@rinaldodev valeu pela resposta.
      O pior que precise setar mesmo esses headers :(
      Bom, nesse caso vou ter que testar numa versão mais nova do Java.
      Abraço!

  • @caioargentino5307
    @caioargentino5307 3 года назад +1

    Que conteúdo bom! Muito obrigado pelos videos do seu canal, ajudam muito a aprender Java!

  • @davipessoa7840
    @davipessoa7840 2 года назад +3

    Muito interessante e realmente é simples até pra quem ver de primeira vez. Achei interessante a introdução de abordagem de manipulação de arquivos, upload e download o que seria um conteúdo bacana de se fazer tendo que é algo mais incomum.

  • @wmdn29
    @wmdn29 3 месяца назад

    E como fazer o retorno da API entrar como um objeto especifico (User, Product, etc)?

  • @PauloHenrique182
    @PauloHenrique182 3 года назад +1

    Video muito bom, brigadao Rinaldo por esse conteudo master sobre Java, estavamos precisando.

  • @guilhermecosta9613
    @guilhermecosta9613 2 года назад

    Como eu pego um valor específico do response? Se eu fizer uma requisição que retorna o nome do produto, como eu pego o valor do campo "nome"?

  • @danroxha
    @danroxha 3 года назад +1

    Muito bom

  • @renatorodrigues5886
    @renatorodrigues5886 3 года назад +1

    Cara muito obrigado pelo video, muito bom ser membro do seu Canal !!!

    • @rinaldodev
      @rinaldodev  3 года назад

      Valeu, Renato! Que bom que curtiu!

  • @kauanmocelin
    @kauanmocelin Год назад

    Ótima explicação Rinaldo. Porém essa nova api do http client me deixou na mão quando precisei de um multipart/form-data, precisei implementar na mão o body da requisição enquanto na lib da apache já vem tudo pronto. Achei uma falha gigante deixarem de fora isso, em pleno 2023 ter que reinventar a roda criando template do body na mão é inadmissível.

  • @wendelberggoldneralves5910
    @wendelberggoldneralves5910 3 года назад +2

    Parabéns Rinaldo!
    Tenho aprendido muito contigo!
    Você tem algum video ou se você poderia fazer um video sobre request em APIs SOAP ?

    • @rinaldodev
      @rinaldodev  3 года назад

      Valeu! Vou deixar anotada a sugestão, mas não tenho previsão. :)

  • @arozendojr
    @arozendojr 3 года назад +1

    olhando para o passado, me desculpe o cheiro de naftalina, quando tentei fazer isso no java 7, recebo um erro de java.net.SocketException: Connection reset, em outros endPoint funciona com java 7, quando mudo para java 8 funciona tudo, sabe o que poderia ser do java 7 para o java 8?

    • @rinaldodev
      @rinaldodev  3 года назад +1

      Fala, Antônio! Não entendi, é quando vai fazer o que exatamente?
      Essa API que estou mostrando no vídeo começou no Java 9 e só foi oficializada no Java 11!

    • @arozendojr
      @arozendojr 3 года назад

      @@rinaldodev Usando o código postman , dentro do main(), executando client.newCall(request).execute().
      No java 7, resultado Connection reset , só trocando para Java 8 funciona.
      Connection reset não sei o que tem no java 7 para retornar esse erro

  • @marlosiguatu
    @marlosiguatu 2 года назад

    como envio o token de uma api que exige autenticação?

  • @mecetnoca
    @mecetnoca 3 года назад

    Olá. Como se faz para fazer o submit de uma pagina de login/senha e pegar o conteúdo da proxima página de boas vindas dessa forma via código? Sei que existe o selenium e tal, mas é possível fazer isso com o HttpClient? Abraços

    • @rinaldodev
      @rinaldodev  3 года назад

      É possível fazer com HttpClient, porém páginas de autenticação sempre contém alguns mecanismos de segurança que tornam isso uma tarefa mais complexa. O ideal é inspecionar as requisições HTTP que são realizadas durante o login usando, por exemplo, o DevTools do Chrome. Depois de entender o fluxo, implentá-lo no HttpClient é mais fácil.

    • @mecetnoca
      @mecetnoca 3 года назад

      @@rinaldodev Bacana, eu varei a internet para ver algo e não encontrei, se possível vc poderia postar algum exemplo? Obrigado!

  • @lehfelixx
    @lehfelixx 2 года назад +1

    Excelente!
    Só estou tendo um problema, estou enviando um json no body para uma outra aplicação, eu tenho um arquivo cvs que trato no spark formatando ele para json, se o arquivo for pequeno vai de boa, mas se eu enviar uma massa grande (Que resulta em um mega json) da erro, Caused by: java.nio.channels.ClosedChannelException se puder da uma luz agradeço rs abraço!

    • @rinaldodev
      @rinaldodev  2 года назад

      Tá usando BodyPublisher de InputStream?

    • @lehfelixx
      @lehfelixx 2 года назад

      @@rinaldodev não, estou usando o de String, a variável dataSetToJson é uma String, ta assim...
      HttpRequest request = HttpRequest.newBuilder()
      .POST(HttpRequest.BodyPublishers.ofString(dataSetToJson))
      .uri(URI.create("localhost:8088/doc"))
      .headers("Accept", "application/json")
      .build();
      HttpClient
      .newBuilder()
      .build()
      .send(request, HttpResponse.BodyHandlers.ofString());