On Sun, 3 Sep 2023 09:16:24 GMT, Vyom Tewari <[email protected]> wrote:
>> With the current implementation of HttpURLConnection if server rejects the >> “Expect 100-continue” then there will be ‘java.net.ProtocolException’ will >> be thrown from 'expect100Continue()' method. >> >> After the exception thrown, If we call any other method on the same instance >> (ex getHeaderField(), or getHeaderFields()). They will internally call >> getOuputStream() which invokes writeRequests(), which make the actual server >> call. >> >> The code change will sets the existing variable ‘rememberedException’ when >> there is exception and getOutputStream0() will re-throw >> ‘rememberedException’ if the ‘rememberedException’ is not null. >> >> Note: getOutputStream0() also call’s ‘expect100Continue()’ if >> ‘expectContinue’ is true. > > Vyom Tewari has updated the pull request incrementally with one additional > commit since the last revision: > > modified the junit tests names If another code than 100 is returned there's no point in sending the request body, hence the exception. You can get the 200 and the response at this point by looking at the status code and reading the response input stream. IMHO it's better than returning null or some other special input stream that would discard the data (or throw when it's used). ------------- PR Comment: https://git.openjdk.org/jdk/pull/15483#issuecomment-1711523567
