安卓发送Get、Post请求,解决参数乱码问题

【NanoHTTPD】Android,使用NanoHTTPD搭建服务器,接受Http请求,最佳实践 安卓app,作为服务器,接受Http,get post 请求推送数据,NanoHTTPD是一个免费、轻量级的(只有一个Java文件) HTTP服务器,可以很好地嵌入到Java程序中。支持 GET, POST, PUT, HEAD 和 DELETE 请求,支持文件上传,占用内存很小。 阅读详情
/**
     * 发送GET请求
     * @param urlAddress 请求的网址
     * @param requestParams 请求参数
     * @return
     */
    protected String submitGetRequest(String urlAddress, RequestParams requestParams) {
        String result = null;
        HttpURLConnection connection = null;
        URL url = null;

        try {
            if (requestParams != null) {
                // 请求参数
                Map<String, String> params = requestParams.getParams();
                int paramSize = params.size();
                int index = 1;
                StringBuilder paramsBuilder = new StringBuilder();
                paramsBuilder.append("?");
                for (String key : params.keySet()) {
                    paramsBuilder.append(key).append("=").append(URLEncoder.encode(params.get(key), "UTF-8"));
                    if (index < paramSize) {
                        paramsBuilder.append("&");
                        index++;
                    }
                }
                url = new URL(urlAddress + paramsBuilder.toString());
            } else {
                url = new URL(urlAddress);
            }

            connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");
            connection.setRequestProperty("Content-type", "text/html");
            // 不要用cache,用了也没有什么用,因为我们不会经常对一个链接频繁访问。(针对程序)
            connection.setUseCaches(false);
            connection.setConnectTimeout(6 * 1000);
            connection.setReadTimeout(6 * 1000);
            connection.setRequestProperty("Charset", "utf-8");

            connection.connect();

            if (HttpURLConnection.HTTP_OK == connection.getResponseCode()) {
                InputStream inputStream  = connection.getInputStream();

                BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));
                StringBuilder builder = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    builder.append(line).append("\n");
                }
                result = builder.toString();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                connection.disconnect();
            }
        }
        return result;
    }

    /**
     * 发送POST请求
     * @return
     */
    protected String submitPostRequest(String urlAddress, RequestParams requestParams) {
        String result = null;
        HttpURLConnection connection = null;
        try {
            URL url = new URL(urlAddress);
            connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");

            //connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows 7)");
            connection.setRequestProperty("Accept", "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*");
            connection.setRequestProperty("Accept-Language", "zh-cn");
            //connection.setRequestProperty("UA-CPU", "x86");
            //connection.setRequestProperty("Accept-Encoding", "gzip");
            // 很重要
            connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setConnectTimeout(6 * 1000);
            connection.setReadTimeout(6 * 1000);
            // 发送POST请求必须设置这两项
            connection.setDoOutput(true);
            connection.setDoInput(true);
            connection.setRequestProperty("Charset", "utf-8");

            connection.connect();

            if (requestParams != null) {
                // 请求参数
                Map<String, String> params = requestParams.getParams();
                int paramSize = params.size();
                int index = 1;
                StringBuilder paramsBuilder = new StringBuilder();
                for (String key : params.keySet()) {
                    paramsBuilder.append(key).append("=").append(params.get(key));
                    if (index < paramSize) {
                        paramsBuilder.append("&");
                        index++;
                    }
                }

                OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
                writer.write(paramsBuilder.toString());
                writer.flush();
                writer.close();
            }

            if (HttpURLConnection.HTTP_OK == connection.getResponseCode()) {
                InputStream inputStream = null;
                inputStream = connection.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"));
                StringBuilder builder = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    builder.append(line).append("\n");
                }
                result = builder.toString();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (connection != null) {
                connection.disconnect();
            }
        }
        return result;
    }
python调用hypermesh调用tcl_TclTk如何调用HyperMesh运行tcl脚本文件 #Tcl/Tk编写界面部分set t [toplevel .tp]focus $tgrab $tset Filename "E:/CAE_Tech/process_files/88/Example.tcl"set Font "Times 12 bold"wm title $t "Call HyperMesh"wm attribute $t -topmost 1wm withdraw $tset t... 阅读详情

相关推荐

超详细YOLOv8姿态检测全程概述:环境、训练、验证与预测详解

本篇博客详细介绍了使用YOLOv8-pose进行姿态估计的全过程,包括不同版本模型的性能比较、训练与验证步骤,以及预测代码的实现。它对模型参数、训练过程和输出结果进行了解释,同时提供了详细的配置文件示例和标签数据格式说明。此外,还演示了如何使用预训练模型进行图像预测,并如何处理和理解预测结果。最后,它还讨论了如何评估和比较不同模型的性能。如果有哪里写的不够清晰,小伙伴本可以给评论或者留言,我这边会尽快的优化博文内容,另外如有需要,我这边可支持技术答疑与支持。

CDBmax的博客 3万+

解决部分手机发送get请求时传递中文参数服务器获取不到正确参数

最近在做项目的过程中,遇到get请求的时候,传入中文参数,服务器接收的是?,然后经过对中文进行UTF-8编码,解决此问题。特此记录。 //需要对汉字进行编码 防止部分手机不能正常传递中文参数 String keyword= URLEncoder.encode(keyword,"UTF-8"); 发送get请求。

lzq520210的博客 1295

突发环境事件怎么模拟?用Python+GIS实现高斯烟团模型(附完整代码)

本文详细介绍了如何利用Python与GIS技术实现高斯烟团模型,用于模拟化工泄漏等突发环境事件的动态扩散过程。通过核心原理讲解、参数快速获取方案、Python代码实现及GIS可视化集成,为环境应急人员提供了一套完整的解决方案。特别适合危险品运输事故等瞬态污染场景的应急决策支持。

weixin_33692284的博客 486

Android访问服务器返回中文乱码

最近在写一个Android项目,其中要用到HttpClient。不论是使用HttpGet,还是HttpPost,访问服务器的返回数据中,所有的中文均为乱码。试过多种方法均不能转码成功显示。 试过的方法有以下几种: 1、使用URLEncoder.encode(str,"utf-8")对包含乱码的字符串str进行转码。 2、使用URLDecoder.decode(str,"utf-8")对包含乱

u013302006的博客 3987

Wio-LR1121多频段LoRa模块技术解析与应用实践

LoRa技术作为低功耗广域物联网(LPWAN)的核心通信方案,通过独特的扩频调制技术实现远距离传输与强抗干扰能力。其工作原理基于CSS(Chirp Spread Spectrum)调制,支持动态调整扩频因子(SF)和带宽(BW)来平衡传输距离与数据速率。Wio-LR1121模块作为Semtech LR1121芯片的载体,创新性地整合了sub-GHz、S-Band和2.4GHz多频段支持,配合仅1.35μA的睡眠电流,为跨境物联网部署提供了硬件基础。在智慧农业、工业监测等场景中,开发者可通过SPI接口快速集成

weixin_33742618的博客 416

航测无人机las点云数据生成DEM

“ 做航测的同僚都知道,Pix4D或者CC(ContextCapture)都可以生成DSM,往往高程点提取以及土方计算都需要用到DEM,PhotoScan软件可以提出地面点并只应用地面点连接三角网,然而分类效果差,生成的DEM不管是平整度还是精度,都不理想。而传统等高线生DEM需要耗费较长时间,以下提供一种参考方法,供大家探讨。 ” 1 点云数据 航测类软件大多可以生成点云数据,如Pix4D,PhotoScan,CC等,此次点云数据为citymapper2相片基于CC生产的Las点云。 2 筛选地面点 筛.

qq_43173805的博客 1万+

Android HttpPost数据中文乱码的解决方案

在项目中,以HttpPost方式向服务器上提交数据时,服务器上中文竟然显示乱码,针对该种情况证明解决呢?其实,这样的问题,在架构的时候,就应该考虑到,如果牵扯到各个不同的平台应用,尽量统一使用UTF8编码,可以少很多麻烦。当然在post数据的时候,可以指定编码,请参阅下面的函数: 01 public Map CreateNote(intalbumId, String title

移动开发 1401

Pyrosim进阶指南:从隧道火灾模拟到复杂通风策略分析

本文深入探讨Pyrosim在隧道火灾模拟与通风策略分析中的高级应用。从精确几何建模到火源参数设置,再到通风系统的量化分析,详细介绍了如何利用Pyrosim优化隧道安全设计。特别强调了临界风速验证、横向通风配置及结果可视化技巧,为工程师提供实用的进阶指南。

weixin_30644369的博客 138

android HttpPost传JSON数据中文乱码的解决方法

在项目中使用HttpPost方式向服务器提交JSON数据时,服务器上接收的json数据竟然显示乱码,查找了不少方法,最终一个解决了我的问题,我的部分代码如下: HttpPost hp = new HttpPost(address); JSONObject jo = new JSONObject(); try { jo.put("stationname", stat

在梅边的专栏 8662

Qt+VS集成高德红外相机SDK与OpenCV的采图实践

本文详细介绍了在Qt和Visual Studio环境中集成高德红外相机SDK与OpenCV的完整实践方案。涵盖环境配置、SDK初始化、图像采集与处理、多线程优化等关键技术点,重点解决了高德红外相机数据转换、温度信息提取和Qt界面显示优化等核心问题,为红外图像处理应用开发提供可靠参考。

palm99的专栏 645

Metal 一、初识 Metal 及其语言规范

游戏开发者的新的技术平台,该技术能够为3D图像提高 10 倍的渲染性能。苹果2018年推出 Metal,在此之前一直使用OpenGL ES。1图形渲染;2高并发计算。苹果文档给出的 Metal 优化:CPU 低消耗、GPU 高利用、连续处理器并行、有效的资源利用Metal 官方文档。

irainsa的博客 1220

解决Post请求中文乱码问题

那么这里会有一个问题,在前端页面中,没有设置表单Method是Get还是Post时,默认是Get,当我们将Method设置成Post时,如果提交的数据是中文时,会有乱码问题。 解决办法就是在doPost方法里加一个API就行 这时候就解决了Post请求的中文乱码问题。...

while(true){ study } 8196

Unreal Engine开发:角色动画与状态机_动画混合:通过混合节点实现平滑动画过渡

动画混合是提升游戏动画质量的关键技术之一。Unreal Engine提供了多种混合节点,包括BlendSpace1D、Blend Two By Bool、Blend Two By Alpha和Sequencer,每种节点适用于不同的场景。通过合理使用这些节点,可以实现平滑、自然且高效的动画过渡效果。此外,遵循最佳实践和高级应用技巧,可以进一步优化动画质量和性能。希望本节内容对你在Unreal Engine中实现动画混合有所帮助,使你的游戏角色动作更加流畅和自然。

chenlz2007的博客 1246

Android攻城狮 post、get传递参数及乱码问题

public class RegistActivity extends Activity { private EditText name, age; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { ...

weixin_30950237的博客 149

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

doGet和doPost不同使用以及安卓乱码问题解决案例总结

1、path传输数据,数据之间是一个&符号进行连接。 2、Get 和post  Public  (1)get 方式提交参数给web应用 (2)post方式提交参数给web应用 (3)HttpClient发送post请求 具体代码:    public static boolean save(String title,String length,String encoding){ S

洋葱专栏-有灵魂的程序员 645

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Android连接Tomcat服务器

在保证服务器是正常状态时,将从Android模拟器上发送请求给服务端并接收服务端返回来的响应。 保证HttpServlet配置正常。可以通过在浏览器输入配置的地址,若能正常响应,那么在Android中去请求的话也是能正常响应的。 这里列举的Demo是在activity中有两个按钮,分别执行get请求和post请求的同时传递参数到服务端,并将服务端返回的信息显示到textview上。 客户端

Tom_xiaoxie的博客 7772

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Android学习笔记----HttpURLConnection 和 HttpClient(已经被废弃)

/***************************************************************/ 使用 HTTP 协议访问网络 在 Android 上发送 HTTP 请求的方式一般有两种, HttpURLConnection 和 HttpClient. HttpURLConnection 首先需要获取

,,,,的博客 8630

关于HTTP协议在安卓中的小知识点

工作原理比较简单:就是客户端向服务器发出一条HTTP 请求,服务器收到请求之后会返回一些数据给客户端,然后客户端再对这些数据进行解析和处理就可以。 HttpURLConnection,在安卓上发送http请求 URL url = new URL("http://www.baidu.com"); 传入网址 HttpURLConnection connection = (HttpUR...

weixin_30730053的博客 77

Android入门 发送HTTP的GET和POST请求

Android入门 发送HTTP的GET和POST请求

qq_44884619的博客 1259

【安卓笔记】android客户端向tomcat服务器发送请求中文乱码问题解决

android客户端请求服务端的url地址中含有中文时将会产生中文乱码问题。 产生乱码的原因有主要以下几个方面: ------------------------------------------------------------------------------------------------     1.当以get方式请求服务端的资源时,没有对url中的中文进行编码。

RowandJJ 5015

Android传统HTTP请求get----post方式提交数据(包含乱码问题)

1.模仿登入页面显示 (解决中文乱码的问题,主要是对中文的数据进行URL编码) android手机默认的编码是UTF-8 2.手机截图Demo 3.服务器截图 代码如下: 服务器端的代码: //测试 android设备登入 public class Login extends HttpServlet { public void doGet(HttpServ

猫猫虫 的专栏 2843

解决了中文乱码的http的get和post请求demo

Demo分为两部分,一部分是web端,用MyEclipse完成,另一部分是客户端,用Android Studio完成。

sinat_29398599的博客 782

Android访问服务器(TOMCAT)乱码引发的问题

一线互联网Android面试题含详解(初级到高级专题)这些题目是今年群友去腾讯、百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。并且大多数都整理了答案,熟悉这些知识点会大大增加通过前两轮技术面试的几率如果设置门槛,很多开发者朋友会因此错过这套高级架构资料,错过提升成为架构师的可能。这就失去了我们的初衷;让更多人都能通过高效高质量的学习,提升自己的技术和格局,升职加薪。最后送给大家一句话,望共勉,永远不要放弃自己的梦想和追求;

2401_84123584的博客 1215

理解Android客户端POST请求参数

深入Android客户端POST请求参数 我们都知道,我们的客户端通过HTTP向服务器发送的post请求实质都是在拼接一个form表单。我们一般会使用下面几种方式进行post 1. 提交参数 2. 提交文件 3. 即提交参数也提交文件 本文也将就这三种方式的请求进行分析 提交参数的请求如我们使用OkHttp发起一个post请求,我们需要自己构建一个FormBody表单。

王小六的博客 9705

Android中的Http通信(四)Post、Get传递参数

本文主要介绍的是通过http中的GET方式和POST方式上传数据到服务器,其中涉及到解决服务器乱码问题。本文需要服务器和Android前端配合,由于这里是写android方面的问题,后台服务器我就写了一个简单的demo,废话不多说,直接开干。 遵循上一篇的习惯,先来一个布局吧: [html] view plain copy LinearLayout

weixin_39389323的博客 1031

Android_HttpURLConnection_Get和Post请求

版权声明:本文为原创文章,未经博主允许不得转载。http://blog.youkuaiyun.com/zimo2013 目录(?)[-] HttpURLConnection实现步骤GZIP压缩简单应用 1get请求2post表单提交3post文件上传 本博文为子墨原创,转载请注明出处! http://blog.youkuaiyun.com/zimo2013/article/detai

hello_zhou的博客 2820
上一篇: Tomcat The JRE_HOME environment variable is not defined correctly
下一篇: 反射获取对象的属性名和对应的值并转为json字符串
ithouse
博客等级 码龄12年 200粉丝 212原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ithouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值