android POST请求(https)遇到的问题

       安卓项目开发第一阶段完工,接下来是后台交互。当然,与后台交互第一步一般都是与注册登录接口打交道。

        不说废话了,进入正题···以下讲的post请求,是跟https相关

一、android POST请求流程

        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 将输入流转换成字符串信息:

将输入流转换成字符串信息 demo

           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

      解决方法:忽略证书问题()

trustAllHosts
setHostnameVerifier

          以上是百度到的方法,毕竟我只是一个刚接触android开发才两个月的小菜鸟,原文比较乱,整理一番供查阅。原文出处(尊重原文作者劳动成果)

          我是不断成长的mouse ···

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,679评论 25 709
  • 2017年5月17日 Kylin_Wu 标注(★☆)为考纲明确给出考点(必考) 常见手机系统(★☆) And...
    Azur_wxj阅读 5,801评论 0 10
  • 网络请求是android客户端很重要的部分。下面从入门级开始介绍下自己Android网络请求的实践历程。希望能给刚...
    passiontim阅读 5,193评论 0 17
  • 这一代的消费者———是真的难伺候 比起很多年前,拿着钱买不到好的东西。现在的趋势,越发的是拿着合适的钱,...
    昼夜思阅读 2,394评论 0 0
  • 今早看到這樣一篇文章,大致寫了在新產品的起步階段,為什麼會陷入沒人用的死循環。 新產品在起步階段十分艱難,當產品發...
    Makiyoko阅读 1,826评论 0 2