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

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

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

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

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



답변

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

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

conn.getOutputStream().write(someBytes);


답변

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


답변

주석을 추가하면 연결이 오래 지속되고 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


답변

public void setDoOutput( boolean dooutput )

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

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


답변