自己简单封装的自己项目需要的http请求

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

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://www.mzph.cn/news/457048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

excel导入linux乱码怎么解决方法,,请大家都来看下,Excel导入有乱码?原因出在哪里?应该怎么解决?...

老师&#xff0c;感谢你再次的回答。我按照您的方法操作&#xff0c;转换utf-8另外为CSV格式&#xff0c;然后这个CSV格式在Notepad 编辑器中打开后&#xff0c;没有乱码&#xff0c;μ 符号(希腊字符)正确显示。我想导入文件已经准备完毕&#xff0c;当我导入的时候&#xff0…

Oracle 正则表达式

一. 正则表达式简介: 正则表达式&#xff0c;就是以某种模式来匹配一类字符串。一旦概括了某类字符串&#xff0c;那么正则表达式即可用于针对字符串的各种相关操作。例如&#xff0c;判断匹配性&#xff0c;进行字符串的重新组合等。正则表达式提供了字符串处理的快捷方式。…

python编程中的if __name__ == 'main': 的作用和原理[2]

这个问题来自于知乎用户的提问&#xff0c;当时看到这个问题&#xff0c;我只是做了下简单的回答。后来我发现&#xff0c;对于很多人来说&#xff0c;更准确的说应该是大部分的 Python 初学者&#xff0c;对这个问题理解的不是很深刻。所以这里我来做下总结&#xff0c;并试图…

Java基础中按值传递和引用传递详解

下面是我在网上看到的一个帖子&#xff0c;解释的感觉挺全面&#xff0c;就转过来&#xff0c;以供以后学习参考&#xff1a; 1&#xff1a;按值传递是什么 指的是在方法调用时&#xff0c;传递的参数是按值的拷贝传递。示例如下&#xff1a; [java] view plaincopy public cla…

【Foreign】采蘑菇 [点分治]

采蘑菇 Time Limit: 20 Sec Memory Limit: 256 MBDescription Input Output Sample Input 51 2 3 2 31 21 32 42 5Sample Output 10912911HINT Main idea 询问从以每个点为起始点时&#xff0c;各条路径上的颜色种类的和。 Solution 我们看到题目&#xff0c;立马想到了O(n^2)…

c语言迷宫游戏怎么存放坐标,求解迷宫问题(c语言,很详细哦

《求解迷宫问题(c语言,很详细哦》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《求解迷宫问题(c语言,很详细哦(5页珍藏版)》请在人人文库网上搜索。1、求迷宫问题就是求出从入口到出口的路径。在求解时 , 通常用的是 “穷举求解”的方法 ,即从入口出发 ,顺某一方向向…

模块概述

概述 目前代码比较少&#xff0c;写在一个文件中还体现不出什么缺点&#xff0c;但是随着代码量越来越多&#xff0c; 代码就越来越难以维护 为了解决难以维护的问题&#xff0c;我们把很多相似功能的函数分组&#xff0c;分别放到不同的文件中取。这样每个文件所包含的内容相…

【MySQL】PREPARE 的应用

简单的用set或者declare语句定义变量&#xff0c;然后直接作为sql的表名是不行的&#xff0c;mysql会把变量名当作表名。在其他的sql数据库中也是如此&#xff0c;mssql的解决方法是将整条sql语句作为变量&#xff0c;其中穿插变量作为表名&#xff0c;然后用sp_executesql调用…

简历要求中“ 扎实的JAVA基础”的学习方法

最近在头条看到一篇关于Java基础学习的文章&#xff0c;感觉写的很不错&#xff0c;分享一下&#xff0c;希望对大家有帮助 什么东西算作Java基础&#xff1f;学到什么程度才算扎实&#xff1f; 这些问题的答案&#xff0c;LZ已经用文言文告诉你了&#xff0c;咳咳&#xff0c;…

C++11 tuple的使用

多少分转载于:https://www.cnblogs.com/DswCnblog/p/6524832.html

c语言程序设计贪吃蛇需求分析,C语言编程新手入门基础进阶学习!贪吃蛇小游戏演示和说明...

C语言是面向过程的&#xff0c;而C&#xff0b;&#xff0b;是面向对象的设计贪吃蛇游戏的主要目的是让大家夯实C语言基础&#xff0c;训练编程思维&#xff0c;培养解决问题的思路&#xff0c;领略多姿多彩的C语言。游戏开始后&#xff0c;会在中间位置出现一条只有三个节点的…

解决bash: mysql: command not found 的方法【linux mysql命令 】

linux下&#xff0c;在mysql正常运行的情况下&#xff0c;输入mysql提示&#xff1a; mysql command not found 遇上-bash: mysql: command not found的情况别着急&#xff0c;这个是因为/usr/local/bin目录下缺失mysql导致&#xff0c;只需要以下方法即可以解决&#xff1a; …

堆和栈的区别(经典干货)

一、预备知识—程序的内存分配 一个由C/C编译的程序占用的内存分为以下几个部分 1、栈区&#xff08;stack&#xff09;— 由编译器自动分配释放 &#xff0c;存放函数的参数值&#xff0c;局部变量的值等。其 操作方式类似于 数据结构 中的栈。 2、堆区&#xff08;he…

Strus2中关于ValueStack详解

什么是ValueStack 它是一个接口com.opensymphony.xwork2.util.ValueStack。我们使用它是将其做为一个容器&#xff0c;用于携带action数据到页面。在页面上通过ognl表达式获取数据。 valueStack主要是将action数据携带到页面上&#xff0c;通过ognl获取数据 1.ValueStack有一个…

Airbnb React/JSX 编码规范

Airbnb React/JSX 编码规范算是最合理的React/JSX编码规范之一了内容目录基本规范Class vs React.createClass vs stateless命名声明模块代码对齐单引号还是双引号空格属性Refs引用括号标签函数/方法模块生命周期isMountedBasic Rules 基本规范每个文件只写一个模块.但是多个无…

Mysql数据库使用总结

mysql数据库使用总结 本文主要记录一些mysql日常使用的命令&#xff0c;供以后查询。 1.更改root密码 mysqladmin -uroot password yourpassword 2.远程登陆mysql服务器 mysql -uroot -p -h192.168.137.10 -P3306 3.查询数据库 show databases; 4.进入某个数据库 use databa…

c语言递归汉诺塔次数,汉诺塔问题(C语言经典递归问题(一))

把A杆上的金盘全部移到C杆上&#xff0c;并仍保持原有顺序叠好。操作规则&#xff1a;每次只能移动一个盘子&#xff0c;并且在移动过程中三根杆上都始终保持大盘在下&#xff0c;小盘在上&#xff0c;操作过程中盘子可以置于A、B、C任一杆上。思路&#xff1a;图解&#xff1a…

Eclipes导入的项目中的中文都是乱码的解决办法

把项目导入Eclipse时&#xff0c;里边的中文全是乱码&#xff0c;试了很多方法&#xff0c;最终总结一下&#xff01; eclipse之所以会出现乱码问题是因为eclipse编辑器选择的编码规则是可变的。一般默认都是UTF-8或者GBK&#xff0c;当从外部导入的一个工程时&#xff0c;如果…

理解浏览器是如何加载及渲染网页的

先上图&#xff0c;我们再慢慢解释&#xff0c;这图就是浏览器加载网页的一个过程 当我们在浏览器输入一个地址&#xff08;比如:http://toadw.cn&#xff09;,那么点击回车后&#xff0c;浏览器是如何加载网页的呢&#xff1f; 加载过程 一开始浏览器是不知道你输入的http://t…

CentOS下的Mysql的安装和使用

1.使用安装命令 &#xff1a;yum -y install mysql mysql-server mysql-devel 安装完成却发现Myserver安装缺失&#xff0c;在网上找原因&#xff0c;原来是因为CentOS 7上把MySQL从默认软件列表中移除了&#xff0c;用MariaDB来代替&#xff0c;所以这导致我们必须要去官网上…