项目开发的时候,我们使用webservice调用别人的数据,然后通过netty传输过来。但是,netty在传输的时候,会有数据过大传不过来的原因。这个时候,别人给我提议使用http接受数据。
思路就是在使用netty传输的时候,传不过来,改用http传输,这个时候数据已经是拿到了,发送过去。另一端接受即可。
上代码。
发送数据
public static String loginOfPost(String str) {
HttpURLConnection conn = null;
try {
// 创建一个URL对象
URL mURL = new URL("http://localhost:12001");
// 调用URL的openConnection()方法,获取HttpURLConnection对象
conn = (HttpURLConnection) mURL.openConnection();
conn.setRequestMethod("POST");// 设置请求方法为post
conn.setReadTimeout(10000);// 设置读取超时为5秒
conn.setConnectTimeout(10000);// 设置连接网络超时为10秒
conn.setDoOutput(true);// 设置此方法,允许向服务器输出内容
// 获得一个输出流,向服务器写数据,默认情况下,系统不允许向服务器输出内容
OutputStream out = conn.getOutputStream();// 获得一个输出流,向服务器写数据
out.write(str.getBytes());
out.flush();
out.close();
int responseCode = conn.getResponseCode();// 调用此方法就不必再使用conn.connect()方法
if (responseCode == 200) {
InputStream is = conn.getInputStream();
String state = getStringFromInputStream(is);
return state;
} else {
// Log.i(TAG, "访问失败" + responseCode);
System.out.print("访问失败");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
conn.disconnect();// 关闭连接
}
}
return null;
}
接受数据
/**
* 接受客服端发送的请求
* @param map
*/
private String serverAcceptRequest(Map map, String json,int port,String methodName) {
StringBuffer sb = new StringBuffer();
try {
ServerSocket serverSocket = new ServerSocket(port);
while(true) {
json = JSONArray.toJSONString(map);
cwpService.sendMsgToIpa(UUID.randomUUID().toString(), methodName, json);
Socket clientSocket = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String temp;
while((temp=in.readLine()) != null)
sb.append(temp);
in.close();
break;
}
} catch(Exception e) {
System.out.println("ERROR: " + e.getMessage());
System.exit(1);
}
return sb.toString();
}