要求体付きHTTP要求をDELETEで送信します。

1474 ワード

HTTPで要求を送信する場合、設定要求を要求するように、一般的な要求方式は、PUT、POST、GET、DELETE方式などである。JAVA言語を使ってDELETE要求を送信する場合、JAVAのJDK自身が提供するHttpUrlConnectionの対象は、DELETE方式の要求は要求体を持たないとデフォルトで認められますので、下記のコードを使ってDELETE方式のHTTP要求を行うと、
private String f(List list) throws IOException {

		URL url = new URL("www.163.com");
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
		connection.setRequestMethod("DELETE");
		connection.setDoInput(true);
		connection.setDoOutput(true);
		connection.setRequestProperty("name", "robben");
		connection.setRequestProperty("content-type", "text/html");
		OutputStreamWriter out = new OutputStreamWriter(
				connection.getOutputStream(), "8859_1");
		//           JSON  
		JSONArray jsonArray = JSONArray.fromObject(list);
		//         
		out.write("" + jsonArray);
		out.flush();
		out.close();
		//        
		BufferedReader in = new BufferedReader(new InputStreamReader(
				connection.getInputStream()));
		String line = null;
		StringBuffer content = new StringBuffer();
		while ((line = in.readLine()) != null) {
			// line     ,          
			content.append(line);
		}
		in.close();
		return content.toString();
	}
JVMは投げ出します。
java.net.ProtocolException: HTTP method DELETE doesn't support output
の異常は、DELETE方式のHTTP要求に要求体を書き込むことができないことを示しています。
しかし、DELETE方式のHTTPに必ず要求するとしたら?実は方法があります。ここでapacheのHttp Clientを使うことができます。