Geralmente, é inevitável encontrar chamadas para interfaces externas durante o desenvolvimento do projeto. Este artigo descreve o método de chamada da classe HttpURLConnection em segundo plano java para simular solicitações do navegador. Pode ser usado para chamadas de interface. Compartilhe com todos para sua referência. O método de implementação específico é o seguinte:
Copie o código da seguinte forma: package com.cplatform.movie.back.test;
importar java.io.BufferedReader;
importar java.io.DataOutputStream;
importar java.io.InputStreamReader;
importar java.net.HttpURLConnection;
importar java.net.URL;
importar java.net.URLEncoder;
classe pública HttpURLConnectionTest {
String final estática pública GET_URL = "http://112.4.27.9/mall-back/if_user/store_list?storeId=32";
string final estática pública POST_URL = "http://112.4.27.9/mall-back/if_user/store_list";
/**
* Interface chama GET
*/
public static void httpURLConectionGET() {
tentar {
URL url = new URL(GET_URL); // Converte a string em um endereço de solicitação de URL;
HttpURLConnection connection = (HttpURLConnection) url.openConnection();//Abre a conexão
connection.connect();//Conecta sessão
// Obtém fluxo de entrada
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
Linha de corda;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {// Loop de fluxo de leitura
sb.append(linha);
}
br.close();//Fecha o fluxo
connection.disconnect(); // Desconectar
System.out.println(sb.toString());
} catch (Exceção e) {
e.printStackTrace();
System.out.println("Falha!");
}
}
/**
* Interface chama POST
*/
public static void httpURLConnectionPOST(){
tentar {
URL url = nova URL(POST_URL);
//Força a conexão urlConnection retornada pelo método open para uma conexão HttpURLConnection (identifique uma conexão de objeto remoto referenciada pela url)
HttpURLConnection connection = (HttpURLConnection) url.openConnection();// Neste momento cnnection é apenas um objeto de conexão, aguardando para ser conectado
//Defina o fluxo de saída da conexão como verdadeiro, o padrão é falso (as solicitações posteriores passam parâmetros implicitamente na forma de um fluxo)
conexão.setDoOutput(true);
//Define o fluxo de entrada da conexão como verdadeiro
conexão.setDoInput(true);
//Define o método de solicitação para postar
connection.setRequestMethod("POST");
// cache de pós-solicitação está definido como falso
conexão.setUseCaches(falso);
//Definir se a instância HttpURLConnection executa o redirecionamento automaticamente
connection.setInstanceFollowRedirects(true);
//Defina cada atributo no cabeçalho da solicitação (o seguinte é o tipo de conteúdo, definido como o parâmetro from codificado por urlEncoded)
//aplicativo/x-javascript text/xml->xml data application/x-javascript->json object application/x-www-form-urlencoded->form data
connection.setRequestProperty("Tipo de conteúdo", "aplicativo/x-www-form-urlencoded");
// Estabelece uma conexão (a solicitação não é iniciada até que o método connection.getInputStream() seja chamado. As configurações dos parâmetros acima precisam ser feitas antes deste método)
conexão.connect();
//Cria um fluxo de entrada e saída, usado para gerar os parâmetros transportados na conexão, (o conteúdo de saída é o conteúdo depois?)
DataOutputStream dataout = new DataOutputStream(connection.getOutputStream());
String parm = "storeId=" + URLEncoder.encode("32", "utf-8"); //O método URLEncoder.encode() codifica strings
// Parâmetros de saída para a conexão
dataout.writeBytes(parm);
//Atualiza e fecha o stream após a conclusão da saída
dataout.flush();
dataout.close(); // Etapa importante e fácil de ignorar (feche o stream, lembre-se!)
System.out.println(connection.getResponseCode());
//A conexão inicia uma solicitação e processa a resposta do servidor (obtém o fluxo de entrada da conexão e o agrupa como bufferedReader)
BufferedReader bf = novo BufferedReader(new InputStreamReader(connection.getInputStream()));
Linha de corda;
StringBuilder sb = new StringBuilder(); // Usado para armazenar dados de resposta
//Lê o stream em loop, caso não chegue ao fim
while ((linha = bf.readLine()) != nulo) {
sb.append(bf.readLine());
}
bf.close(); // Etapa importante e fácil de ignorar (feche o stream, lembre-se!)
connection.disconnect(); // Destrua a conexão
System.out.println(sb.toString());
} catch (Exceção e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// httpURLConectionGET();
httpURLConnectionPOST();
}
}
Espero que este artigo seja útil para a programação Java de todos.