Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (C) 2011 ritwik.net
   *
   * Licensed 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.
  */
 
 package com.openyelp.client;
 
 import java.net.URL;
 import java.util.Map;
 
 
 public class HttpJsonRpcClientTransport implements JsonRpcClientTransport {
 
 	private URL url;
 	private final Map<StringStringheaders;
 	private int connectTimeout;
 	private int readTimeout;

Parameters:
url
connectTimeout 连接超时设置
readTimeout 读取数据超时设置
 
 	public HttpJsonRpcClientTransport(URL urlint connectTimeout,
 			int readTimeout) {
 		super();
 		this. = connectTimeout;
 		this. = readTimeout;
 		this. = new HashMap<StringString>();
 	}
 
 	public HttpJsonRpcClientTransport(URL url) {
 		this. = url;
 		this. = new HashMap<StringString>();
 		 = 5000;
 		 = 7500;
 	}
 
 	public final void setHeader(String keyString value) {
 		this..put(keyvalue);
 	}
 
 	public final String call(String requestDatathrows Exception {
 		String responseData = post(requestData);
 		return responseData;
 	}
 
 	private String post(URL urlMap<StringStringheadersString data)
 			throws IOException {
 
 		if (headers != null) {
 			for (Map.Entry<StringStringentry : headers.entrySet()) {
 				connection.addRequestProperty(entry.getKey(), entry.getValue());
 			}
 		}
 		connection.addRequestProperty("Accept-Encoding""gzip");
 		connection.setRequestMethod("POST");
 		connection.setDoOutput(true);
 		connection.connect();
向服务器写数据
 
 		OutputStream out = null;
 		try {
 			out = connection.getOutputStream();
 			out.write(data.getBytes("UTF-8"));
 			out.flush();
 			out.close();
 			int statusCode = connection.getResponseCode();
 			if (statusCode != .) {
 				throw new JsonRpcClientException(
 						"unexpected status code returned : " + statusCode);
 			}
finally {
			if (out != null) {
				out.close();
			}
		}
		String responseEncoding = connection.getHeaderField("Content-Encoding");
		responseEncoding = (responseEncoding == null ? "" : responseEncoding
				.trim());
		String body = "";
		InputStream in = connection.getInputStream();
		try {
			in = connection.getInputStream();
			if ("gzip".equalsIgnoreCase(responseEncoding)) {
				in = new GZIPInputStream(in);
			}
			in = new BufferedInputStream(in);
			ByteBuffer byteData = readToByteBuffer(in);
			body = Charset.forName("UTF-8").decode(byteData).toString();
finally {
			if (in != null) {
				in.close();
			}
		}
		return body;
	}
	public static ByteBuffer readToByteBuffer(InputStream inStream)
			throws IOException {
		byte[] buffer = new byte[];
		int read;
		while (true) {
			read = inStream.read(buffer);
			if (read == -1)
				break;
			outStream.write(buffer, 0, read);
		}
		ByteBuffer byteData = ByteBuffer.wrap(outStream.toByteArray());
		return byteData;
	}
	private static final int bufferSize = 0x20000; // ~130K.
New to GrepCode? Check out our FAQ X