com.baidu.aip.http.AipHttpClient Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of java-sdk Show documentation
Show all versions of java-sdk Show documentation
The AIP SDK for Java provides Java APIs for all of AI APIs.
/*
* Copyright 2017 Baidu, Inc.
*
* 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.baidu.aip.http;
import com.baidu.aip.util.ExceptionUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.Proxy;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
public class AipHttpClient {
protected static final Logger LOGGER = (Logger) LoggerFactory.getLogger(AipHttpClient.class);
/**
* post方式请求服务器(https协议)
*
* @param request 请求内容
* @return AipResponse
*/
public static AipResponse post(AipRequest request) {
String url;
String charset = request.getContentEncoding();
String content = request.getBodyStr();
HashMap header = request.getHeaders();
AipResponse response = new AipResponse();
DataOutputStream out = null;
InputStream is = null;
try {
if (request.getParams().isEmpty()) {
url = request.getUri().toString();
} else {
url = String.format("%s?%s", request.getUri().toString(), request.getParamStr());
}
URL console = new URL(url);
Proxy proxy = request.getConfig() == null ? Proxy.NO_PROXY : request.getConfig().getProxy();
HttpURLConnection conn = (HttpURLConnection) console.openConnection(proxy);
// set timeout
if (request.getConfig() != null) {
conn.setConnectTimeout(request.getConfig().getConnectionTimeoutMillis());
conn.setReadTimeout(request.getConfig().getSocketTimeoutMillis());
}
conn.setDoOutput(true);
// 添加header
for (Map.Entry entry : header.entrySet()) {
conn.setRequestProperty(entry.getKey(), entry.getValue());
}
conn.connect();
out = new DataOutputStream(conn.getOutputStream());
out.write(content.getBytes(charset));
out.flush();
int statusCode = conn.getResponseCode();
response.setHeader(conn.getHeaderFields());
response.setStatus(statusCode);
response.setCharset(charset);
if (statusCode != 200) {
return response;
}
is = conn.getInputStream();
if (is != null) {
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = is.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
response.setBody(outStream.toByteArray());
}
return response;
} catch (Exception e) {
response.setErrorMsg(ExceptionUtil.buildErrorMessage(e));
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return response;
}
}