问题描述
- Android网络请求,在电脑浏览器上可以访问到服务器,手机却访问不到
-
用浏览器可以访问到,但是手机就有时会出现FileNotFoundException,重点是把程序退出之后,有时又可以访问到该地址了请各位大侠帮帮忙
解决方案
C++实现文本消息推送--通过post请求方式访问第三方服务器从电脑向手机进行消息推送
解决方案二:
以下是firstPost方法 :
public static String firstPost(String urlString) {
StringBuffer resultData = new StringBuffer("");// 使用StringBuffer比String更高效
try {
URL url = new URL(urlString);// 新建URL对象
HttpURLConnection urlConn = (java.net.HttpURLConnection) url
.openConnection();// 新建网络连接对象
urlConn.setRequestMethod("POST");
// 避免出现乱码
urlConn.setRequestProperty("Accept-Charset", "utf-8");
urlConn.setRequestProperty("contentType", "utf-8");
urlConn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");// POST方式必需
// 获取sessionId
java.lang.String cookieval = urlConn.getHeaderField("set-cookie");
if (cookieval != null) {
MyApplication.setSessionid(cookieval.substring(0,
cookieval.indexOf(";")));
Log.e("sessionId", MyApplication.getSessionid());
}
urlConn.connect();
java.io.InputStreamReader in = new java.io.InputStreamReader(
urlConn.getInputStream());// 新建IO对象
if (urlConn.getContentLength() != -1) {// 响应头部返回了流的长度
char[] buffer = new char[urlConn.getContentLength()];
in.read(buffer, 0, buffer.length);
resultData.append(buffer);
} else {// 流的长度未知
java.io.BufferedReader buffer = new java.io.BufferedReader(in);// 输出流
java.lang.String inputLine = null;
while (((inputLine = buffer.readLine()) != null))// 使用循环来读取获得的数据
{
resultData.append(inputLine + "
");
}
}
in.close();
urlConn.disconnect();
} catch (java.net.UnknownHostException e) {// 未连接网络
e.printStackTrace();
} catch (android.os.NetworkOnMainThreadException e) {// UI线程不支持网络操作
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return resultData.toString();
}
解决方案三:
访问网络要异步。。。。
解决方案四:
以下是Log出来的:
[url]http://203.195.223.58:8088/up_campus/createChatroom/20151005413[/url]
11-10 11:15:43.230: D/sessionid(10572): JSESSIONID=C309FAE57F04F502B207B73E27C282EB
11-10 11:15:43.350: W/System.err(10572): java.io.FileNotFoundException: [url]http://203.195.223.58:8088/up_campus/createChatroom/20151005413[/url]
11-10 11:15:43.350: W/System.err(10572): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:190)
11-10 11:15:43.350: W/System.err(10572): at com.jh.util.Function.secondPost(Function.java:95)
11-10 11:15:43.350: W/System.err(10572): at com.whu.ql.view.ErshouActivity$1.run(ErshouActivity.java:46)
11-10 11:15:43.350: W/System.err(10572): at java.lang.Thread.run(Thread.java:841)
解决方案五:
我注释了以下几行代码:
if (cookieval != null) {
MyApplication.setSessionid(cookieval.substring(0,
cookieval.indexOf(";")));
Log.e("sessionId", MyApplication.getSessionid());
}
然后在线程中运行了你的代码,没有问题,每次都能够获取到正确的resultData。
所以,你可以看一下我注释的几行代码,你写的setSessionid()方法有没有问题。另外,如果不需要线程同步,StringBuilder比StringBuffer性能更好。
http://blog.csdn.net/wanghang1208/article/details/49764245