
网页链接
这个博客表述的比较详细的了,一般请求的话直接使用okhttp3这个库就可以了。如果有大量接口的话还可以跟Retrofit2一起结合来使用。望采纳。
安卓项目开发第一阶段完工,接下来是后台交互。当然,与后台交互第一步一般都是与注册登录接口打交道。
不说废话了,进入正题···以下讲的post请求,是跟https相关
1.将访问路径转成URL :
URLurl =newURL(path)
2.通过URL获取连接:
HttpURLConnection conn = (HttpURLConnection) url.openConnection()
3.设置请求方式:
conn.setRequestMethod("POST")
4.设置请求超时时间:
conn.setConnectTimeout(5000)
5.设置请求头信息:
conn.setRequestProperty("Content-type","application/json")
6.获取输出流,将数据写给服务器:
6.1 OutputStreamos = conn.getOutputStream()// 获取输出流
6.2 os.write(data.getBytes())// 将数据写给服务器
7.设置响应码:
int code = conn.getResponseCode()
7.1 请求码200,表明请求成功,获取返回内容的输入流:
InputStream is = conn.getInputStream()
Log.v("json","MESSAGE == >"+streamToString(is))
7.2 将输入流转换成字符串信息:
7.3 若返回值400,则是返回网络异常,做出响应的处理。
1、android.os.NetworkOnMainThreadException
原因:
android.os.NetworkOnMainThreadException是说不要在主线程中访问网络,这个是android3.0版本开始就强制程序不能在主线程中访问网络,要把访问网络放在独立的线程中。
解决方法:(方法一亲测有效,另外两种方法未测试,想了解的请 移步至此 ···尊重原文作者劳动成果)
1> 想要忽略这些强制策略问题的话,可以在onCreate()方法里面加上
StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build()
StrictMode.setThreadPolicy(policy)
并在方法上加上@SuppressLint("NewApi"),重试,OK。
此时,又抛出另一个问题······(程序猿就是不断的解决各种问题,泪奔~~)
2、javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path
解决方法:忽略证书问题()
以上是百度到的方法,毕竟我只是一个刚接触android开发才两个月的小菜鸟,原文比较乱,整理一番供查阅。 原文出处 (尊重原文作者劳动成果)
我是不断成长的mouse ···
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)