URLConnection.setDoOutput ()은 정확히 어떤 영향을 미칩니 까?


80

거기 setDoOutput()에서 URLConnection. 에 따르면 문서 내가해야

출력에 URL 연결을 사용하려면 DoOutput 플래그를 true로 설정하고 그렇지 않으면 false로 설정하십시오.

이제 정확히이 문제에 직면 하고 있습니다. Java 런타임은 요청을 POST한 번 setDoOutput(true)호출하고 서버는 GET요청 에만 응답 합니다. setDoOutput(true)코드에서 제거하면 어떻게되는지 이해하고 싶습니다 .

이것이 정확히 어떤 영향을 미칠까요? 내가 false지금 무엇을 할 수 있고 지금 무엇을 할 수 없는가? GET요청 을 수행 할 수 있습니까? 이 방법의 맥락에서 "출력"이란 무엇입니까?

답변:


96

POST 또는 PUT 요청과 같이 요청 본문 을 보내려면 ( output ) true로 설정해야 합니다. GET을 사용하면 일반적으로 시체를 보내지 않으므로 필요하지 않습니다.

요청 본문 자체를 보내는 것은 연결의 출력 스트림을 통해 수행됩니다.

conn.getOutputStream().write(someBytes);

이미지를 다운로드하는 경우 어떻게합니까?
Jaydev

다운로드 중? 아니면 업로드?
Thilo

27

setDoOutput(true)POSTPUT요청에 사용됩니다 . 그렇다면 요청 false을 사용하기위한 것입니다 GET.


2
좋아, 다른 쪽의 서버가 POST가 아닌 PUT 요청 만 수락하기 때문에 어떻게이 연결이 PUT을 수행하도록 할 수 있습니까?
ante.sabo 2012-07-05

이미지를 다운로드하는 경우 어떻게합니까?
Jaydev

1

주석을 추가하면 연결이 오래 지속되고 GET과 POST를 모두 보내는 경우 다음 작업을 수행합니다.

if (doGet) {    // some boolean
    con.setDoOutput(false); // reset any previous setting, if con is long lasting
    con.setRequestMethod("GET");
}
else {
    con.setDoOutput(true);  // reset any previous setting, if con is long lasting
    con.setRequestMethod("POST");
}

연결이 오래 지속되지 않도록하려면 매번 연결을 닫으십시오.

if (doClose)    // some boolean
    con.setRequestProperty("Connection", "close");

con.connect();              // force connect request

0
public void setDoOutput( boolean dooutput )

매개 변수로 값을 doOutput취하고이 URLConnection 에 대한 필드 의이 값을 지정된 값으로 설정합니다.

입력 및 / 또는 출력에 URL 연결을 사용할 수 있습니다. 출력에 URL 연결을 사용하려면 DoOutput 플래그를 true로 설정하고 그렇지 않으면 false로 설정하십시오. 기본값은 거짓입니다.


3
질문하기 전에 설명서에서 읽었습니다. 내가 묻는 이유는 그 의미를 이해하지 못하기 때문입니다.
sharptooth

당신이 연결 개체에 쓰고 싶은 경우에 당신은 참 serDoOutput 설정할 수있어
Mithun Sasidharan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.