HTTP에서 PUT, DELETE HTTP 요청을 보내는 방법URL 연결?
(실제로) PUT, DELETE 요청을 보낼 수 있는지 알고 싶습니다.java.net.HttpURLConnection
HTTP 기반 URL로 이동합니다.
GET, POST, TRACE, OPTIONS 요청 전송 방법에 대한 기사를 많이 읽었지만 PUT 및 DELETE 요청을 성공적으로 실행하는 샘플 코드를 아직 찾지 못했습니다.
HTTP PUT을 실행하려면:
URL url = new URL("http://www.example.com/resource");
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true);
httpCon.setRequestMethod("PUT");
OutputStreamWriter out = new OutputStreamWriter(
httpCon.getOutputStream());
out.write("Resource content");
out.close();
httpCon.getInputStream();
HTTP DELETE를 실행하려면:
URL url = new URL("http://www.example.com/resource");
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true);
httpCon.setRequestProperty(
"Content-Type", "application/x-www-form-urlencoded" );
httpCon.setRequestMethod("DELETE");
httpCon.connect();
저는 이렇게 작동했습니다.
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("DELETE");
int responseCode = connection.getResponseCode();
public HttpURLConnection getHttpConnection(String url, String type){
URL uri = null;
HttpURLConnection con = null;
try{
uri = new URL(url);
con = (HttpURLConnection) uri.openConnection();
con.setRequestMethod(type); //type: POST, PUT, DELETE, GET
con.setDoOutput(true);
con.setDoInput(true);
con.setConnectTimeout(60000); //60 secs
con.setReadTimeout(60000); //60 secs
con.setRequestProperty("Accept-Encoding", "Your Encoding");
con.setRequestProperty("Content-Type", "Your Encoding");
}catch(Exception e){
logger.info( "connection i/o failed" );
}
return con;
}
그 후 코드:
public void yourmethod(String url, String type, String reqbody){
HttpURLConnection con = null;
String result = null;
try {
con = conUtil.getHttpConnection( url , type);
//you can add any request body here if you want to post
if( reqbody != null){
con.setDoInput(true);
con.setDoOutput(true);
DataOutputStream out = new DataOutputStream(con.getOutputStream());
out.writeBytes(reqbody);
out.flush();
out.close();
}
con.connect();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String temp = null;
StringBuilder sb = new StringBuilder();
while((temp = in.readLine()) != null){
sb.append(temp).append(" ");
}
result = sb.toString();
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
logger.error(e.getMessage());
}
//result is the response you get from the remote side
}
@adietisheim과 HttpClient를 제안하는 다른 사람들의 의견에 동의합니다.
HttpURL Connection을 사용하여 서비스를 정지하기 위한 간단한 콜을 시도했지만 납득이 가지 않았고 그 후 HttpClient를 사용해 보니 정말 쉽고 이해하기 쉬우며 좋았습니다.
다음으로 put http 콜을 발신하는 코드의 예를 나타냅니다.
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPut putRequest = new HttpPut(URI);
StringEntity input = new StringEntity(XML);
input.setContentType(CONTENT_TYPE);
putRequest.setEntity(input);
HttpResponse response = httpClient.execute(putRequest);
Url Connection은 사용하기 어려운 API입니다.HttpClient는 훨씬 더 나은 API이며, 이 stackoverflow 질문이 완벽하게 보여주는 것과 같은 특정 사항을 달성하는 방법을 검색하는 데 시간을 허비하지 않아도 됩니다.여러 REST 클라이언트에서 jdk HttpUrlConnection을 사용한 후 이 글을 씁니다.게다가 scalability 기능(스레드 풀, 접속 풀 등)에 대해서도,Http Client가 우수함
HTML에서 PUT를 올바르게 수행하려면 try/catch로 둘러싸야 합니다.
try {
url = new URL("http://www.example.com/resource");
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true);
httpCon.setRequestMethod("PUT");
OutputStreamWriter out = new OutputStreamWriter(
httpCon.getOutputStream());
out.write("Resource content");
out.close();
httpCon.getInputStream();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Rest 템플릿도 옵션으로 사용할 수 있습니다.
String payload = "<?xml version=\"1.0\" encoding=\"UTF-8\"?<RequestDAO>....";
RestTemplate rest = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/xml");
headers.add("Accept", "*/*");
HttpEntity<String> requestEntity = new HttpEntity<String>(payload, headers);
ResponseEntity<String> responseEntity =
rest.exchange(url, HttpMethod.PUT, requestEntity, String.class);
responseEntity.getBody().toString();
삭제 및 풋 요청에는 간단한 방법이 있습니다.단순히 "를 추가하는 것만으로 할 수 있습니다._method
투고 요구에 대한 파라미터와 기입PUT
" 또는DELETE
그 가치를 위해!
언급URL : https://stackoverflow.com/questions/1051004/how-to-send-put-delete-http-request-in-httpurlconnection
'IT' 카테고리의 다른 글
날짜/시간을 밀리초의 문자열로 포맷합니다. (0) | 2022.11.18 |
---|---|
사전을 사전에 추가하다 (0) | 2022.11.18 |
router-link에서 부모 v-on을 소비하는 방법: complete clicked (0) | 2022.11.18 |
여러 TIMESTAMP 컬럼이 있는1개의 Mysql 테이블 (0) | 2022.11.17 |
PHP 메일 함수가 전자 메일 전송을 완료하지 못했습니다. (0) | 2022.11.17 |