Here you can find the source of sendPostRequest(Reader data, URL endpoint, Writer output)
Parameter | Description |
---|---|
data | Data to be sent |
endpoint | The endpoint to which the data has to be POSTed |
output | Output |
Parameter | Description |
---|---|
Exception | If an error occurs while POSTing |
public static void sendPostRequest(Reader data, URL endpoint, Writer output) throws Exception
//package com.java2s; /*// w w w.ja v a2 s . c o m * Copyright (c) 2005-2011, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. * * WSO2 Inc. licenses this file to you under the Apache License, * Version 2.0 (the "License"); you may not use this file except * in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; import java.net.HttpURLConnection; import java.net.ProtocolException; import java.net.URL; public class Main { /** * Reads data from the data reader and posts it to a server via POST request. * data - The data you want to send * endpoint - The server's address * output - writes the server's response to output * * @param data Data to be sent * @param endpoint The endpoint to which the data has to be POSTed * @param output Output * @throws Exception If an error occurs while POSTing */ public static void sendPostRequest(Reader data, URL endpoint, Writer output) throws Exception { HttpURLConnection urlConnection = null; try { urlConnection = (HttpURLConnection) endpoint.openConnection(); try { urlConnection.setRequestMethod("POST"); } catch (ProtocolException e) { throw new Exception("Shouldn't happen: HttpURLConnection doesn't support POST??", e); } urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.setUseCaches(false); urlConnection.setAllowUserInteraction(false); urlConnection.setRequestProperty("Content-type", "text/xml; charset=" + "UTF-8"); OutputStream out = urlConnection.getOutputStream(); try { Writer writer = new OutputStreamWriter(out, "UTF-8"); pipe(data, writer); writer.close(); } catch (IOException e) { throw new Exception("IOException while posting data: " + e.getMessage(), e); } finally { if (out != null) { out.close(); } } InputStream in = urlConnection.getInputStream(); try { Reader reader = new InputStreamReader(in); pipe(reader, output); reader.close(); } catch (IOException e) { throw new Exception("IOException while reading response: " + e.getMessage(), e); } finally { if (in != null) { in.close(); } } } catch (IOException e) { throw new Exception("Connection error (is server running at " + endpoint + " ?): " + e.getMessage(), e); } finally { if (urlConnection != null) { urlConnection.disconnect(); } } } /** * Pipes everything from the reader to the writer via a buffer * * @param reader Reader * @param writer Writer * @throws java.io.IOException If piping fails */ private static void pipe(Reader reader, Writer writer) throws IOException { char[] buf = new char[1024]; int read; while ((read = reader.read(buf)) >= 0) { writer.write(buf, 0, read); } writer.flush(); } }