代码如下:
public static String doImgPost(URL url, String picture) {
HttpURLConnection urlConnection = null;
Log.d("tag","这只从客户端得到的数据"+picture);
try {
urlConnection = (HttpURLConnection) url.openConnection();//打开http连接
urlConnection.setConnectTimeout(3000);//连接的超时时间
urlConnection.setUseCaches(false);//不使用缓存
//urlConnection.setFollowRedirects(false);是static函数,作用于所有的URLConnection对象。
urlConnection.setInstanceFollowRedirects(true);//是成员函数,仅作用于当前函数,设置这个连接是否可以被重定向
urlConnection.setReadTimeout(3000);//响应的超时时间
urlConnection.setDoInput(true);//设置这个连接是否可以写入数据
urlConnection.setDoOutput(true);//设置这个连接是否可以输出数据
urlConnection.setRequestMethod("POST" );//设置请求的方式
//urlConnection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");//设置消息的类型
System.out.println("正在连接");
urlConnection.connect();// 连接,从上述至此的配置必须要在connect之前完成,实际上它只是建立了一个与服务器的TCP连接
System.out.println("连接成功");
OutputStream out = urlConnection.getOutputStream();//输出流,用来发送请求,http请求实际上直到这个函数里面才正式发送出去
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));//创建字符流对象并用高效缓冲流包装它,便获得最高的效率,发送的是字符串推荐用字符流,其它数据就用字节流
bw.write(picture);//把字符串写入缓冲区中
bw.flush();//刷新缓冲区,把数据发送出去,这步很重要
out.close();
bw.close();//使用完关闭
if(urlConnection.getResponseCode()==HttpURLConnection.HTTP_OK){//得到服务端的返回码是否连接成功
InputStream in = urlConnection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
StringBuilder response = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
response.append(line);
}
return response.toString();
}
}catch (Exception e) {
}finally{
urlConnection.disconnect();//使用完关闭TCP连接,释放资源
}
return null;
}
Android不报错,服务器正常,能通过浏览器连接。 问题出在urlConnection.connect();这一句上,但是不知道该怎么改。
遇到了同样的问题,在CSDN看到了,希望阿里云团队能够给出正确、标准的答案~请查看
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。