2019独角兽企业重金招聘Python工程师标准>>>

package www.tydic.com.util;import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Map;/****/
public class HttpUtils {/** Function  :   发送Post请求到服务器* Param     :   params请求体内容,encode编码格式*/public static String submitPostData(String strUrlPath,String params, String encode) {byte[] data = params.getBytes();try {URL url = new URL(strUrlPath);HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();httpURLConnection.setConnectTimeout(3000);     //设置连接超时时间httpURLConnection.setDoInput(true);                  //打开输入流,以便从服务器获取数据httpURLConnection.setDoOutput(true);                 //打开输出流,以便向服务器提交数据httpURLConnection.setRequestMethod("POST");     //设置以Post方式提交数据httpURLConnection.setUseCaches(false);               //使用Post方式不能使用缓存httpURLConnection.setInstanceFollowRedirects(true);//设置请求体的类型是文本类型httpURLConnection.setRequestProperty("Content-Type", "application/json");httpURLConnection.connect();httpURLConnection.setConnectTimeout(10000);DataOutputStream dataOutputStream = new DataOutputStream(httpURLConnection.getOutputStream());dataOutputStream.write(params.getBytes());dataOutputStream.flush();//获得输出流,向服务器写入数据OutputStream outputStream = httpURLConnection.getOutputStream();outputStream.write(data);int response = httpURLConnection.getResponseCode();            //获得服务器的响应码if(response == HttpURLConnection.HTTP_OK) {InputStream inptStream = httpURLConnection.getInputStream();System.out.println("=================返回数据======================");String resutStr = dealResponseResult(inptStream);String decresultStr = DesEncryptUtil.decrypt(resutStr);return decresultStr;//处理服务器的响应结果}} catch (IOException e) {e.printStackTrace();}return "";}/** Function  :   封装请求体信息* Param     :   params请求体内容,encode编码格式*/public static StringBuffer getRequestData(Map<String, String> params, String encode) {StringBuffer stringBuffer = new StringBuffer();        //存储封装好的请求体信息try {for(Map.Entry<String, String> entry : params.entrySet()) {stringBuffer.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), encode)).append("&");}stringBuffer.deleteCharAt(stringBuffer.length() - 1);    //删除最后的一个"&"} catch (Exception e) {e.printStackTrace();}return stringBuffer;}/** Function  :   处理服务器的响应结果(将输入流转化成字符串)* Param     :   inputStream服务器的响应输入流*/public static String dealResponseResult(InputStream inputStream) {String resultData = null;      //存储处理结果ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();byte[] data = new byte[1024];int len = 0;try {while((len = inputStream.read(data)) != -1) {byteArrayOutputStream.write(data, 0, len);}} catch (IOException e) {e.printStackTrace();}resultData = new String(byteArrayOutputStream.toByteArray());return resultData;}}

在项目里如何使用:

// TODO: http request.String account = loginAccount.getText().toString().trim();String password = loginPassword.getText().toString().trim();Map<String, String> paramsMap = new HashMap<String, String>();paramsMap.put("login_nbr", account);paramsMap.put("login_type", Constant.LOGIN_TYPE);paramsMap.put("pwd", password);Gson gson = new Gson();String all =  gson.toJson(paramsMap);all = DesEncryptUtil.encrypt(all);String resultData = HttpUtils.submitPostData(Constant.APP_PAHT_LOGIN, all, "UTF-8");if (resultData==""){resultData="";}Message msg = new Message();Bundle datas = new Bundle();datas.putString("value", resultData);datas.putString("account", account);datas.putString("password", password);msg.setData(datas);handler.sendMessage(msg);

这样就可以直接获取数据了。对resultData数据如何处理如下:

可以使用Gson处理,我使用的Java的JSONObject处理工具

方法如下:

Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);Bundle data = msg.getData();String val = data.getString("value");String account = data.getString("account");String password = data.getString("password");if ("".equals(val)||val.equals(null)){Toast.makeText(MainActivity.this,"网络链接错误,请重试",Toast.LENGTH_SHORT).show();return;}JSONObject resultJson = JSONObject.fromObject(val);String resultCode =  resultJson.get("CODE").toString();if (resultCode.equals(Constant.RESULT_CODE)){String CUST_NAME =  resultJson.get("CUST_NAME").toString();String RESULT =  resultJson.get("RESULT").toString();String CUST_ID =  resultJson.get("CUST_ID").toString();String ORG_CODE =  resultJson.get("ORG_CODE").toString();String ORG_ID =  resultJson.get("ORG_ID").toString();/*** SharedPreferences保存数据*/SharedPreferencesUtils.put(MainActivity.this,"account",account);SharedPreferencesUtils.put(MainActivity.this,"password",password);SharedPreferencesUtils.put(MainActivity.this,"CUST_NAME",CUST_NAME);SharedPreferencesUtils.put(MainActivity.this,"RESULT",RESULT);SharedPreferencesUtils.put(MainActivity.this,"CUST_ID",CUST_ID);SharedPreferencesUtils.put(MainActivity.this,"ORG_CODE",ORG_CODE);SharedPreferencesUtils.put(MainActivity.this,"ORG_ID",ORG_ID);/*** 登录数据存储完毕,进行界面跳转*/Intent it = new Intent(MainActivity.this,MainBusinessActivity.class);startActivity(it);finish();}else {Toast.makeText(MainActivity.this,"账号或密码错误,请重试",Toast.LENGTH_SHORT).show();}Log.i("ssssss","请求结果:" + resultJson.toString());}};

转载于:https://my.oschina.net/u/1399599/blog/853411

自己简单封装的自己项目需要的http请求相关推荐

  1. promise简单封装ajax 完美嵌套多个ajax请求

    转载请注明出处并留个言哈,分享快乐~! request.js文件,注意网页头部script标签加载顺序 function myAjax(json, callback) {var p = new Pro ...

  2. 史上最简单的人脸识别项目登上GitHub趋势榜

    来源 | GitHub Trending整理 | Freesia译者 | TommyZihao出品 | AI科技大本营(ID: rgznai100) 导读:近日,一个名为 face_recogniti ...

  3. 超简单-用协程简化你的网络请求吧,兼容你的老项目和旧的网络请求方式

    前言 在Kotlin协程(后简称协程)出来之后,颠覆了我们很多工具类的封装方式,大大简化了我们很多api的调用,并且使异步操作逻辑更清晰了 其中一个很标志性的地方就属网络请求了,以前的网络请求方式声明 ...

  4. go mgo包 简单封装 mongodb 数据库驱动

    mgo是go编写的mongodb的数据库驱动,集成到项目中进行mongodb的操作很流畅,以下是对其的一些简单封装,具体使用可随意改动封装. 安装 go get gopkg.in/mgo.v2 使用 ...

  5. 微信支付V3版本的 签名生成,验签,解密,统一下单的简单封装

    微信支付 V3版本的 签名生成,验签,解密,统一下单的简单封装 V3Base 获取平台证书 回调报文解密 统一下单 暂时看了文档只完成了这部分,感觉封装的不是特别完美,希望有大佬指点一下,想着封装好一 ...

  6. Android地址(省市区)、日期、时间滚轮选择器简单封装

    前言: 1.android开发中时间.日期.地址等滚轮选择器很常见,很多App会使用这种效果,收集了一下资料,于是自己做了一个简单封装,方便使用,感谢各位大佬的资料,效果如图: 2.使用方法代码如下: ...

  7. Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装

    Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装 目录 Unity 基础 之 一个点(物体)绕另一个点(物体)旋转的简单封装 一.简单介绍 二.实现原理 三.注意事项 四.效果预览 ...

  8. 简单封装的Stripe支付方法

    最近项目需要用到Stripe支付,于是做了一个简单封装,现在贴出来,也许以后用得着 首先,需要在Stripe官方网站申请注册自己的支付帐号,并获取测试和正式用的前后端校验码. 然后,项目后台需要添加S ...

  9. vue2简单封装highcharts

    vue2简单封装highcharts 前言 一.vue文件(high-chart.vue) 二.highcharts配置(default-options.js) 三.包裹highcharts的div宽 ...

最新文章

  1. 局部响应归一化(Local Response Normalization)
  2. windows下使用开源gSOAP技术调用WebService
  3. Swift基础语法 、 元组(Tuple)
  4. 在Activity的Title中加入进度条
  5. js整体缩小网页_SEO网页优化的原则是什么?
  6. 西南民族大学计算机考试试题,西南民族大学预科教育学院 2007级《计算机》模拟试题(含答案)...
  7. 冯诺依曼机器人_冯·诺依曼型计算机的五大组成部分是什么?
  8. c函数sscanf的高级技巧(二)
  9. 微课|中学生可以这样学Python(5.6.1节):列表推导式1
  10. 最新免费wap网址大全
  11. 复制高亮代码到印象笔记
  12. android极光推送回调方法,Flutter在Android中实现极光推送以及指定设备推送
  13. 【English】语法之句子种类(陈述句、疑问句、祈使句、感叹句)
  14. [转]GotW#63 狂乱的代码
  15. Muli3D 6 Struct m3dtriangleinfo 的属性 fZDdx,fZDdy 的推导
  16. t检验该怎么分析?如果选择哪种t检验?
  17. 使用kubeadm工具箱创建kubernetes1.9集群
  18. 计算机字体渲染的学问
  19. 画中画activity状态管理
  20. 2006-4-23八达岭长城

热门文章

  1. leetcode409. 最长回文串
  2. leetcode86. 分隔链表
  3. leetcode85. 最大矩形
  4. python基础技巧总结(三)
  5. 多个线程访问统一对象的不同方法_C#多线程读写同一文件处理
  6. nacos集群的ap cp切换_阿里Nacos-配置-多环境
  7. STL源码剖析 stack 栈 概述->(使用deque双端队列 / list链表)作为stack的底层容器
  8. 安装ipfs-http-client出现constants@0.1.2 install: node build.js > index.browser.js错误的解决办法
  9. Android Gradle 批量修改生成的apk文件名
  10. C语言目录操作 (Linux/Unix)