안녕하세요.HttpURLConnection을 사용한 다중 Http 요청 및 응답
매우 간단한 http 봇을 개발 중입니다. javax.net.ssl.HttpsURLConnection 클래스를 사용하고 있으며 여러 요청을해야합니다. 코드의 발췌문 :
HttpURLConnection urlConnection =
(HttpURLConnection) new URL(url+"?"+firstParameters).openConnection();
urlConnection.setRequestProperty("Accept-Charset", "UTF-8");
headerFields = urlConnection.getHeaderFields();
keys = headerFields.keySet();
for(String key : keys){
if(key != null && key.contains("ookie")){
cookies = urlConnection.getHeaderField(key);
break;
}
}
for(String cookie : cookies.split(";")){
if(cookie.contains("JSESSION")){
JSESSION = cookie.split("=")[1];
break;
}
}
document = new InputSource(urlConnection.getInputStream());
parser.setDocument(document);
attributesId.put("name",new ArrayList<String>(Arrays.asList(attributesNames)));
elementsIds.put("INPUT",attributesId);
elements = parser.getValues(elementsIds);
for(String attr : attributesNames){
secondParameters = secondParameters.replaceAll("#r"+index,elements.get(attr));
}
urlConnection.getInputStream().close();
//Second call
urlConnection = (HttpURLConnection) new URL(url2).openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setRequestProperty("Cookie", "JSESSIONID="+JSESSION);
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
payload = new PrintWriter(urlConnection.getOutputStream());
payload.print(secondParameters);
payload.flush();
payload.close();
먼저 내가 어떤 페이로드하지 않고 요청을하고 난 서버에서 올바른 응답을 볼 수 있어요,하지만 난 지금 (두 번째 요청을 할 때 문제가, 위의 코드를 요약 페이로드 및 JSESSION 쿠키 사용), 첫 번째 요청에서받은 것과 동일한 응답을 받으면 첫 번째 요청을 다시 한 것처럼 보입니다. 제 질문은, 제가 뭘 잘못하고있는 걸까요? 하나의 연결을 열고 헤더와 페이로드를 변경하면됩니까? 여러 HTTP 요청과 관련된 튜토리얼이 있습니다 (혼합 된 메소드, 게시 및 가져 오기 사용)? 사전에
덕분에 내가 전에 HttpURLConnection
을 사용한 적이
답변 해 주셔서 감사합니다. 나는 한 가지 더 질문이있다. 나는 당신이 당신이 서버에 게시하는 것을 보았는가? 예를 들어 브라우저와 서버 사이의 트래픽을보기 위해 피들러 (fiddler) 또는 방화 녀 (firebug)를 사용할 수 있습니다. Java 프로그램에서 보내지는 것을보기 위해 무엇을 사용합니까? – tt0686
좋은 답변이 없습니다 @ tt0686. 방화범이 끌리는 사람이나 프록시 서버를 사용하고 싶습니다. 나는'HttpURLConnection'을 사용하여 쉽게 할 수있는 방법이 없다. – Gray