首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Android中通过POST方法发送json,但始终收到resonponse代码400。服务器正常,如果在后台执行任务

首先,HTTP状态码400表示客户端发送的请求有语法错误,服务器无法理解。在这种情况下,可能存在以下几个可能的原因:

  1. JSON格式错误:请确保你发送的JSON数据格式正确,包括正确的JSON对象或数组的开始和结束符号({}或[]),正确的键值对格式,以及正确的数据类型。
  2. 请求头设置错误:在发送POST请求时,确保设置正确的Content-Type头部,指定请求体的数据类型为application/json。示例代码如下:
代码语言:java
复制
URL url = new URL("http://example.com/api");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");
connection.setDoOutput(true);

String jsonInputString = "{\"key1\": \"value1\", \"key2\": \"value2\"}";

try(OutputStream outputStream = connection.getOutputStream()) {
    byte[] input = jsonInputString.getBytes("utf-8");
    outputStream.write(input, 0, input.length);
}

int responseCode = connection.getResponseCode();
  1. 请求参数错误:检查你发送的请求参数是否正确,并确保与服务器端的接口定义一致。如果有必需的参数或格式要求,请确保正确提供。
  2. 服务器端问题:尽管你提到服务器正常,但仍然需要确保服务器端能够正确处理你发送的请求。可能需要检查服务器端的代码逻辑、请求处理过程、以及返回的错误信息。

总结起来,要解决这个问题,你需要仔细检查你的JSON数据格式、请求头设置、请求参数以及服务器端的处理逻辑。如果问题仍然存在,建议查看服务器端的日志或联系服务器端的开发人员,以获取更详细的错误信息和解决方案。

关于Android中发送POST请求的更多信息,你可以参考腾讯云的相关产品文档:腾讯云移动推送

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java之@RequestBody的使用

即:如果参数时放在请求体,传入后台的话,那么后台要用@RequestBody才能接收到;如果不是放在 请求体的话,那么后台接收前台传过来的参数时,要用@RequestParam...json字符串,如果value为null的话,后端对应收到的就是null。...注:如果在后端方法参数前,指定了@RequestParam()的话,那么前端必须要有对应字段才行(当然可以通过设置 该注解的required属性来调节是否必须传),否者会报错;如果参数前没有任何该注解...,那么前端可以传,也可 以不传,如: 上图中,如果我们传参没有指定token,那么请求能正常进去,但是token为null;如果在String token前指定了@RequestParam...(“token”),那么前端必须要有token这个键时,请求才能正常进去,否者报400错误。

7.1K32

@RequestBody的使用

基础知识介绍: @RequestBody主要用来接收前端传递给后端的json字符串的数据的(请求体的数据的);而最常用的使用请求体传参的无疑是POST请求了,所以使用@RequestBody...即:如果参数时放在请求体,application/json传入后台的话,那么后台要用@RequestBody才能接收到; 如果不是放在请求体的话,那么后台接收前台传过来的参数时...json字符串,如果value为null的话,后端对应收到的就是null。...json数据;不加注解接收URL的数据并组装为对象: 后端对应的Controller: 使用PostMan测试: 注:如果在后端方法参数前,指定了@RequestParam()的话,那么前端必须要有对应字段才行...token,那么请求能正常进去,但是token为null;如果在String token前指定了@RequestParam(“token”),那么前端必须要有token这个键时,请求才能正常进去,否者报

4K31

AJAX

请求只应当用于取回数据 POST方法: 通常用来向指定的资源提交要被处理的数据 POST 请求不会被缓存 POST 请求不会保留在浏览器历史记录 POST 请求对数据长度没有要求 POST方法主要是向服务器提交数据...即根据服务器端响应头部返回的MIME类型把数据转换成能通过responseBody、responseText或responseXML属性存取的格式,为客户端调用作好准备。...4 - (后台处理完成)响应内容解析完成,可以客户端调用了    此阶段确认全部数据都已经解析为客户端可用的格式,解析已经完成。...URL 202——接受和处理、处理未完成 203——返回信息不确定或不完整 204——请求收到返回信息为空 205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件 206——服务器已经完成了部分用户的...——请求的资源必须从服务器指定的地址得到 306——前一版本HTTP中使用的代码,现行版本不再使用 307——申明请求的资源临时性删除 400——错误请求,如语法错误 401——请求授权失败 402—

54840

HTTP 基本知识

对于本教程,Android应用程序将作为客户端,并向服务器发送请求,该服务器将发回响应。要在服务器上请求的资源的标识符始终使用URL(统一资源定位符)。...2、客户端请求 Android应用程序向服务器发送请求。...以前,我们开展过一个项目,服务器根据客户端是Android或IOS应用程序,发送不同的回复。服务器如何知道是什么样的应用程序请求资源?请求头!没错,就是请求头!...② POST&PUT POST和PUT都是将数据发送服务器的方式。但是,其含义是不同的。POST请求期望服务器将其添加到现有的。例如,具有用户对象的POST请求意味着服务器创建一个新账户。...① Status Codes(状态代码) 如上面所了解的,状态码和文本描述由服务器设置,并作为服务器响应的第一行发送。客户端将使用这一行来快速了解服务器发送什么样的响应。

78240

【EventBus】Subscribe 注解分析 ( Subscribe 注解属性 | threadMode 线程模型 | POSTING | MAIN | MAIN_ORDERED | ASYNC)

: 主线程处理事件 , 如果在子线程发送消息 , 处理消息时会将线程切换成主线程 ; 如果发送事件的线程是 主线程 , 则立刻调用消息处理事件 , 此时 主线程会阻塞 ; 如果发送事件的线程是...; BACKGROUND 模式 : 子线程模式 ; 主线程 中发布事件 , 会将事件加入队列 , 然后 通过线程池执行 ; 子线程 中发布事件 , 直接在该线程调用事件处理方法 ,...* 与{@link#MAIN}不同,事件将始终排队等待传递。这确保post调用是非阻塞的。...* 使用此模式的订阅者应尝试快速返回,以避免阻塞后台线程。 * 如果不在Android上,则始终使用后台线程。...* 这始终独立于发布线程和主线程。 * 发布事件从不等待使用此模式的订阅服务器方法。 * 如果订户方法的执行可能需要一些时间,例如网络访问,则订户方法应使用此模式。

95010

SpringMVC-@RequestMapping的参数和用法

SpringMVC 接收到指定的请求,就会来找到映射关系对应的控制器方法来处理这个请求。...类型级别和方法级别都受支持。如果在两个级别上都指定,则方法级别使用条件将覆盖类型级别条件。...类型级别和方法级别都受支持。如果在两个级别上都指定,则方法级别使用条件将覆盖类型级别条件。 @RequestMapping注解的headers属性通过请求的请求头信息匹配请求映射。...result as follows : 状态码404表示:服务器无法找到被请求的页面。将后台代码改为zh-CN即可页面正常跳转。...① 服务器首先根据URL去找页面,如果找不到就返回404; ② 如果找到,但是不能正常处理,就会返回 5XX 类型错误。 其中第一步过程,会根据请求头进行一系列判断 !

59110

ajax的面试题_java框架面试题

###代码上的区别 1:get通过url传递参数 2:post设置请求头 规定请求数据类型 ###使用上的区别 1:post比get安全 (因为post参数在请求体。...get参数url上面) 2:get传输速度比post快 根据传参决定的。 (post通过请求体传参,后台通过数据流接收。速度稍微慢一些。...三: 4开头状态码 4xx(请求错误) 这些状态代码表示请求可能出错,妨碍了服务器的处理 1:400 (错误请求) 服务器不理解请求的语法。 2:403 (禁止) 服务器拒绝请求。...3:404 (未找到) 服务器找不到请求的网页。 四: 5开头状态码 5xx(服务器错误)这些状态代码表示服务器尝试处理请求时发生内部错误。...例如,服务器无法识别请求方法时可能会返回此代码。 502 (错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。 503 (服务不可用) 服务器目前无法使用(由于超载或停机维护)。

84110

Android开发进阶系列】多线程专题

当系统存在大量的线程时,系统会通过会时间片轮转的方式调度每个线程,因此线程不可能做到绝对的并行。         如果在一个进程中频繁地创建和销毁线程,显然不是高效的做法。...()/postDelayed()方式         我们知道,Handler有postDelayed()/post()等API,UI线程通过默认构造方法newHandler(),会创建一个与当前线程的...当在后台任务调用了publishProgress(Progress...)方法后,这个方法就很快会被调用,方法携带的参数就是在后台任务传递过来的。...,如果收到的消息是MESSAGE_POST_RESULT,即执行完了doInBackground()方法并传递结果,那么就调用finish()方法。...如果收到的消息是MESSAGE_POST_PROGRESS,回调onProgressUpdate()方法,更新进度。

31030

基于Http原理实现Android的图片上传和表单提交

现在服务器主要是Web居多,客户端一般通过http上传文件到web服务器,最开始的设想很简单,直接将图片转化为字节流,写入到http的outstream,随后发送出去即可。...当这种方法出现问题,服务器根据文件名这个表单的字段来判定是否接收到文件,我上面那种简单的方法从而使得每次服务器反馈说没有接收到图片文件,从而发送失败。...web端demo Android端上传图片总是失败的情况下,后台开发哥们帮忙实现了web端的请求demo,是可以正常处理请求的,页面如下: 选择文件之后,按浏览器的F12,便可出现开发者工具界面...,Network一栏可以看到具体的请求和响应, 分析其请求头和请求体,来构造Android相同的参数,就可以实现文件的正常上传。...下面就根据web端的请求demo来模拟实现Androidpost提交方法

5.6K00

前端面试题-每日练习(4)

2.visibility: hidden;:元素页面不可见,但它仍会占据空间,保留原始尺寸和位置。 3.opacity: 0;:使元素完全透明,仍保留元素的布局空间。...元素分页媒体或者区域块内,元素的包含块始终是初始包含块,否则取决于每个absolute模式。(CSS3) (7)、sticky 对象常态时遵循常规流。...第一次握手:S只可以确认 自己可以接受C发送的报文段 第二次握手:C可以确认 S收到了自己发送的报文段,并且可以确认 自己可以接受S发送的报文段 第三次握手:S可以确认 C收到了自己发送的报文段 补充400...和401、403状态码 (1)400状态码:请求无效 产生原因: 前端提交数据的字段名称和字段类型与后台的实体没有保持一致 前端提交到后台的数据应该是json字符串类型,但是前端没有将对象JSON.stringify...解决方法: 对照字段的名称,保持一致性 将obj对象通过JSON.stringify实现序列化 (2)401状态码:当前请求需要用户验证 (3)403状态码:服务器已经得到请求,但是拒绝执行

12520

GET和POST本质无非就是TCP链接而已?

Opera 9 地址栏输入190 000字符时依然能正常编辑。...通过代码,网站 405 Method Not Allowed客户端请求方法被禁止 415 对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式,因此请求被拒绝。...URL上展示,上面也有说道URL有一定的限制,所以也会影响到GET的传参 POST请求理论上没有限制的,主要是后台服务器做的限制,比如在Tomcat下取消POST大小的限制(Tomcat默认2M) 安全性...GET请求方式消息不能包含实体内容,,所以GET请求的时候可以把参数暴漏在URL上面,如果一些隐私数据就显得不够安全 POST请求我们可以使用Form表单方式和JSON进行传参 收藏书签 可以收藏...,服务器响应100 Content,浏览器发送Data,服务器响应200(状态码)。

846120

JavaScript学习笔记028-ajax0get0post0跨域请求

三种请求方法: GET POST HEAD http1.1: DELETE PUT 与后台交互时,约定俗成的请求规范 增 POST 删 DELETE 改 PUT 查 GET xhr.readyState...状态码: 0 请求未初始化 1 连接到服务器 2 请求以被接收到 3 正在处理请求 4 请求处理完成,并响应 xhr.status(服务器)http状态码: 100~ 消息 200~ 成功 300~ 重定向...400~ 请求错误 500~ 服务器错误 */ // 生成ajax对象 const xhr = new XMLHttpRequest(); // 通过open方法,设置跟后台交互的一些行为 xhr.open...= () => {} /* get: get方式的数据发送 查询字符串以键值对的方式,get请求的url地址中发送 以?...script的src CORS 在后台程序里设置对应的域进行访问 代理 通过信任的服务器进行代理请求 */

95410

前端面试题ajax_前端性能优化面试题

100 Continue 继续,一般发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息 200 OK 正常返回信息 201 Created 请求成功并且服务器创建了新的资源...callback=动态生成方法方法名)请求数据,而后台则需要将接收到的callback值与数据一同返回,呈现出执行js方法的语句(方法名(数据)),其实就是在请求回来的数据是执行请求是动态生成的js...不登出A的情况下,访问危险网站B。 CSRF的防御 服务端的CSRF方式方法很多样,总的思想都是一致的,就是客户端页面增加伪随机数。...GET:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般2000个字符 POST:一般用于修改服务器上的资源,对所发送的信息没有限制。...然而,以下情况,请使用 POST 请求: 无法使用缓存文件(更新服务器上的文件或数据库) 向服务器发送大量数据(POST 没有数据量限制) 发送包含未知字符的用户输入时,POST 比 GET

2.4K10

python爬虫从入门到放弃(二)之爬虫的原理

下面我们分析爬虫的基本流程 爬虫的基本流程 发起请求 通过HTTP库向目标站点发起请求,也就是发送一个Request,请求可以包含额外的header等信息,等待服务器响应 获取响应内容 如果服务器正常响应...浏览器发送消息给网址所在的服务器,这个过程就叫做HTPP Request 服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做相应的处理,然后把消息回传给浏览器,这个过程就是HTTP Response...请求方式 主要有:GET/POST两种类型常用,另外还有HEAD/PUT/DELETE/OPTIONS GET和POST的区别就是:请求的数据GET是urlPOST则是存放在头部 GET:向指定的资源发出...OPTIONS:这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。...——需要后续操作才能完成这一请求 4xx请求错误——请求含有词法错误或者无法被执行 5xx服务器错误——服务器处理某个正确请求时发生错误 常见代码: 200 OK 请求成功 400 Bad Request

1.5K90

二十.接口调用

状态和reject状态的回调函数 // then方法,你也可以直接return数据而不是Promise对象,在后面的then中就可以接收到数据了 p.then(function...方法,你也可以直接return数据而不是Promise对象,在后面的then中就可以接收到数据了 queryData('http://localhost:3000/data') ...., options).then() HTTP协议,它给我们提供了很多的方法,如POST,GET,DELETE,UPDATE,PATCH和PUT 默认的是 GET 请求 需要在 options 对象...响应格式 用fetch来获取数据,如果响应正常返回,我们首先看到的是一个response对象,其中包括返回的一堆原始字节,这些字节需要在收到后,需要我们通过调用方法将其转换为相应格式的数据,比如JSON...拦截器 请求拦截器 请求拦截器的作用是在请求发送前进行一些操作 例如在每个请求体里加上token,统一做了处理如果以后要改也非常容易 响应拦截器 响应拦截器的作用是收到响应后进行一些操作 例如在服务器返回登录状态失效

6.7K10

API 安全测试的 31 个 Tips

只需要发送一个管道作为第一个字符,然后发送一个shell命令(通过设计的命令注入) TIP5 SSRF漏洞 内部端口探查 利用云服务 使用http://webhook.com显示IP地址和HTTP库 下载大文件...TIP16 即使您使用另一个web代理,始终后台使用Burp。@PortSwigger的人在帮助你管理pentest方面做得非常好。使用“树视图”(免费版本)功能查看您访问过的所有API端点。...TIP23 找到从网络服务器下载任意文件的方法?将测试从黑盒测试转为白盒测试。...id=&id= Send wildcard {"user_id":"*"} 某些情况下,AuthZ机制需要一个普通字符串(本例是一个ID),如果它接收到一个JSON,...然后,当输入到数据获取组件时,使用JSON而不是字符串(e。g:它扁平化了JSON) TIP27 BE服务器不再负责保护XSS攻击。api不返回HTML,而是返回JSON

1.6K30

Ajax

readyState五种状态 ​ 0 - (未初始化) 1 - (载入/正在发送请求) 2 - (载入完成/数据接收) 3 - (交互/解析数据)正在解析响应内容 4 - (后台处理完成)响应内容解析完成...,可以客户端调用了 ​ status 状态码: ​ 常用: 200:请求成功(后台处理结果ok)、 303:重定向 400:请求错误、401:未授权、403:禁止访问、404:文件未找到 500:...服务器错误 ​ get往服务端发送数据时,把数据写到url,明文发送,可以从地址栏中直接看到,不安全 post往服务端发送数据是,把数据写到header后边,不写在url,安全性更高 js原生,...jquery, ajax写法上的不同 js原生:首先创建一个 XMLHttpRequest 通过这个对象打开url然后 send数据 jquery:.get 或则.post发送,参数是(url, json...数据{}, 收到应答时的回调函数) 回调函数(服务端应答数据data, 状态码, XMLHttpRequest异步请求对象) ajax: $.ajax() 参数是json对象{url:, type:post

4.9K20
领券