일반적으로 프로젝트 개발 중에 외부 인터페이스에 대한 호출이 불가피하게 발생합니다. 이 기사에서는 브라우저 요청을 시뮬레이션하기 위해 Java 백그라운드에서 HttpURLConnection 클래스를 호출하는 방법을 설명합니다. 인터페이스 호출에 사용할 수 있습니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 구현 방법은 다음과 같습니다.
다음과 같이 코드를 복사합니다. package com.cplatform.movie.back.test;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
java.net.HttpURLConnection 가져오기;
java.net.URL 가져오기;
java.net.URLEncoder 가져오기;
공개 클래스 HttpURLConnectionTest {
공개 정적 최종 문자열 GET_URL = "http://112.4.27.9/mall-back/if_user/store_list?storeId=32";
공개 정적 최종 문자열 POST_URL = "http://112.4.27.9/mall-back/if_user/store_list";
/**
* 인터페이스 호출 GET
*/
공개 정적 무효 httpURLConectionGET() {
노력하다 {
URL url = new URL(GET_URL); // 문자열을 URL 요청 주소로 변환합니다.
HttpURLConnection 연결 = (HttpURLConnection) url.openConnection();//연결 열기
Connection.connect();//세션 연결
// 입력 스트림 얻기
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
스트링라인;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {// 루프 읽기 스트림
sb.append(라인);
}
br.close();//스트림을 닫습니다.
Connection.disconnect(); // 연결 끊기
System.out.println(sb.toString());
} 잡기(예외 e) {
e.printStackTrace();
System.out.println("실패했습니다!");
}
}
/**
* 인터페이스 호출 POST
*/
공개 정적 무효 httpURLConnectionPOST() {
노력하다 {
URL url = 새 URL(POST_URL);
//open 메소드에 의해 반환된 urlConnection 연결을 HttpURLConnection 연결로 강제합니다(url이 참조하는 원격 개체 연결 식별).
HttpURLConnection 연결 = (HttpURLConnection) url.openConnection();// 이때 cnnection은 연결을 기다리는 연결 개체일 뿐입니다.
//연결 출력 스트림을 true로 설정합니다. 기본값은 false입니다(게시 요청은 암시적으로 스트림 형식으로 매개변수를 전달합니다).
연결.setDoOutput(true);
//연결 입력 스트림을 true로 설정합니다.
연결.setDoInput(true);
//게시 요청 방법을 설정합니다.
Connection.setRequestMethod("POST");
// 게시 요청 캐시가 false로 설정되었습니다.
연결.setUseCaches(false);
//HttpURLConnection 인스턴스가 자동으로 리디렉션을 수행할지 여부를 설정합니다.
연결.setInstanceFollowRedirects(true);
//요청 헤더에 각 속성을 설정합니다. (다음은 콘텐츠 유형이며, urlEncoded로 인코딩된 from 매개변수로 설정됩니다.)
// 애플리케이션/x-javascript text/xml->xml 데이터 애플리케이션/x-javascript->json 객체 애플리케이션/x-www-form-urlencoded->form 데이터
Connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// 연결 설정(connection.getInputStream() 메소드가 호출될 때까지 요청이 시작되지 않습니다. 이 메소드 전에 위의 매개변수 설정이 완료되어야 합니다.)
연결.연결();
//연결에 포함된 매개변수를 출력하는 데 사용되는 입력 및 출력 스트림을 생성합니다. (출력 내용은 다음 내용입니까?)
DataOutputStream dataout = new DataOutputStream(connection.getOutputStream());
String parm = "storeId=" + URLEncoder.encode("32", "utf-8") //URLEncoder.encode() 메서드는 문자열을 인코딩합니다.
// 연결에 대한 출력 매개변수
dataout.writeBytes(parm);
// 출력이 완료된 후 스트림을 새로 고치고 닫습니다.
dataout.flush();
dataout.close(); // 중요하고 무시하기 쉬운 단계(스트림을 닫습니다. 기억하세요!)
System.out.println(connection.getResponseCode());
//연결은 요청을 시작하고 서버 응답을 처리합니다(연결에서 입력 스트림을 가져와 이를 bufferedReader로 래핑합니다).
BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream()));
스트링라인;
StringBuilder sb = new StringBuilder(); // 응답 데이터를 저장하는 데 사용됩니다.
// 끝에 도달하지 못한 경우 루프에서 스트림을 읽습니다.
while ((line = bf.readLine()) != null) {
sb.append(bf.readLine());
}
bf.close(); // 중요하고 무시하기 쉬운 단계(스트림을 닫습니다. 기억하세요!)
Connection.disconnect(); // 연결을 끊습니다.
System.out.println(sb.toString());
} 잡기(예외 e) {
e.printStackTrace();
}
}
공개 정적 무효 메인(String[] args) {
// httpURLConectionGET();
httpURLConnectionPOST();
}
}
이 글이 모든 사람의 Java 프로그래밍에 도움이 되기를 바랍니다.