0 0

为什么使用HttpClient发送json总是返回400?15

android手机端需要发送一个json格式的数据,返回的也是json数据。
现在问题出现在,我无论怎么写都返回400,Bad Request。
问题出在哪儿呢?且看代码,感觉该设置的都设置了。
/**
	 * POST获取服务端数据,发送的是json格式的数据
	 * @param urlString
	 * @param json 需要发送的json数据
	 * @return
	 * @throws ClientProtocolException
	 * @throws IOException
	 */
	public String getDataFromServerByPostForJson(String urlString,JSONObject json) throws ClientProtocolException, IOException{
		String strResult = null;
		HttpClient client = new DefaultHttpClient();

		StringEntity entity = new StringEntity(json.toString());
		entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded"));//"application/octet-stream"
		entity.setContentEncoding(new BasicHeader(HTTP.CONTENT_ENCODING,HTTP.UTF_8));
		
		HttpPost post = new HttpPost(urlString);
		post.setHeader("Accept", "application/json");
		post.setHeader("Content-Type", "application/json");
		post.setEntity(entity);

		HttpResponse response = client.execute(post);

		if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
			strResult = EntityUtils.toString(response.getEntity(), HTTP.UTF_8);
		}else{
			post.abort();
			strResult = "Error Response code "
					+ response.getStatusLine().getStatusCode() + " :"
					+ response.getStatusLine().toString();
			Log.i("tag", strResult);
			return null;
		}
		return strResult;
	}


有碰到类似的朋友吗?
2013年10月28日 11:06

5个答案 按时间排序 按投票排序

0 0

采纳的答案

发送请求的参数与后台 处理程序 的要求不匹配。

特别是用 spring mvc时,容易出现该问题。

比如
@RequestMapping("/api/ddd")
public @ResponseBody JsonResult
   doDummy(@RequestParam("tid')Long id) {
   .....
   return result;
}

如果发送的url是
http://www.foo.com/api/ddd
没有参数,则400
发送请求
http://www.foo.com/api/ddd?id=2323
因为实际要求的参数是tid不是id,还是会出400错

2013年10月28日 22:22
0 0

你的urlString是怎么样的?android模拟器桥接的局域网访问主机不是机器本身的局域网,我记得好像是10.0.2.2访问主机的

2013年10月29日 10:06
0 0

把那些头干掉,根本不用那些东西,直接就能发送

2013年10月29日 09:30
0 0

是不是因为 entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/x-www-form-urlencoded"));//"application/octet-stream"与下面的post.setHeader("Content-Type", "application/json"); 有冲突问题。都改成application/json试一下。

2013年10月28日 21:44
0 0

在浏览器上直接访问可以吗?

2013年10月28日 14:37

相关推荐

    Android HttpClient与Json解析

    在本示例中,HttpClient被用来从服务器获取数据,这些数据通常是JSON格式,这是一种轻量级的数据交换格式,易于人阅读和编写,同时也方便机器解析和生成。 首先,我们需要了解如何使用Android的HttpClient。在...

    HttpClient模拟get,post请求并发送请求参数(json等)

    如果需要发送JSON数据,我们可以使用StringEntity: ```java HttpPost httpPost = new HttpPost("http://example.com"); httpPost.setHeader("Accept", "application/json"); httpPost.setHeader("Content-type", ...

    httpclient发送post请求

    本篇文章将深入探讨如何使用HTTPClient发送POST请求,以及相关的项目结构和实现细节。 首先,"post-demo"项目定义了我们需要调用的接口。通常,这会是一个Web服务,可能是一个RESTful API,提供特定的功能或数据。...

    使用HttpClient发送POST请求,并获取响应内容(附详细步骤).txt

    ### 使用HttpClient发送POST请求,并获取响应内容 #### 一、简介 在现代软件开发中,尤其是在Web应用领域,客户端与服务器之间的通信是非常重要的环节。Java作为一种广泛应用的编程语言,提供了多种方式来实现这一...

    利用HttpClient获取数据并用Gson解析Json数据

    本教程将专注于使用Apache HttpClient库获取网络数据,然后使用Google的Gson库解析JSON格式的数据。这是一个基础但重要的技能,对于任何想要与服务器进行交互的开发者来说都是必备的。 首先,我们需要了解`...

    使用HttpURLConnection或HttpClient方式传json值到spring中

    以下是如何使用`HttpClient`发送JSON的示例: ```java import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; ...

    使用HttpClient必须的jar包

    在压缩包中的"使用HttpClient发送json必须的jar包"可能包含了处理JSON数据所必需的库,如`gson-x.x.x.jar`或`jackson-core-x.x.x.jar`、`jackson-databind-x.x.x.jar`等。 在"使用说明.txt"中,通常会详细阐述如何...

    Java连接WebServer用到的http方法 返回json

    3. **构建POST请求并发送JSON数据** 4. **解析返回的JSON数据** ### 1. 理解HTTP请求与响应的基础概念 HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议,是互联网应用的基础之一。在客户端...

    org.json 和 commons-httpclient

    例如,在一个API请求中,你可以先使用`commons-httpclient`发送请求并获取JSON格式的响应,然后利用`org.json`库解析这些响应数据,提取出你需要的信息。这样,你可以实现客户端与服务器之间的有效数据交互。 总的...

    通过httpclient获取到JSON数据,展示到ListView

    在Android开发中,将通过HTTPClient获取到的JSON数据展示到ListView是一种常见的需求。这个过程涉及到网络请求、JSON解析以及UI绑定等多个环节。下面将详细解释这些知识点。 首先,`HTTPClient`是Apache HttpClient...

    Ionic+Angular+Express实现前后端交互使用HttpClient发送get请求数据并加载显示示例代码.zip

    在本文中,我们将深入探讨如何使用Ionic、Angular和Express框架构建一个完整的前后端交互系统,特别是在客户端使用HttpClient发送GET请求获取数据并在页面上显示。这是一个常见的应用场景,对于开发跨平台移动应用...

    一个使用HttpClient调用天气预报接口的例程

    在Android开发中,HttpClient是一个常用...通过以上知识点的学习,你可以理解如何使用HttpClient进行网络请求,以及处理返回的JSON数据。但请注意,对于新的Android项目,最好遵循最新的最佳实践,使用更现代的网络库。

    httpclientutil

    在"HttpClientUtil2-发送json返回json测试通过.java"这个文件中,我们可以预见到这是一个实现了发送JSON数据并接收JSON响应的示例。以下是一些关键知识点: 1. **Apache HttpClient 库**:HttpClient 是 Apache ...

    httpclient发送post请求.docx

    在本文中,我们将深入探讨如何使用HttpClient发送POST请求,以及处理JSON参数和其他关键点。 1. 创建HttpClient实例: HttpClient的初始化通常涉及构建一个HttpClientBuilder对象,然后调用其build()方法来创建...

    WIFI_HTTPClient_ArduinoJson擷取_esp32_源码

    4. JSON解析:使用ArduinoJson库的`deserializeJson()`方法解析JSON字符串,将其转换为JsonDocument对象。然后,可以使用`JsonDocument`的成员访问器方法获取并处理JSON数据中的各个字段。 5. 清理与关闭:完成数据...

    HttpClient发送post请求.pdf

    如果需要读取服务器返回的数据,可以使用`EntityUtils.toString(result.getEntity())`将响应实体转化为字符串。在示例中,如果`noNeedResponse`为`false`,则返回这个字符串,否则返回`null`。 在处理过程中,可能...

    HttpClient完整实例(普通参数、JSON格式参数)

    这个实例主要涉及了如何使用HttpClient发送POST请求,同时处理普通参数和JSON格式参数,以及解析响应内容。下面我们将深入探讨这些知识点。 一、HttpClient基础 HttpClient库提供了一套完整的API,允许开发者构建...

    HTTP Post提交Json与接收返回结果 Winform程序

    在这个场景中,我们将关注于使用Winform应用程序通过HTTP POST方法发送JSON数据,并接收服务器返回的JSON结果。Winform是.NET Framework中的一个用户界面库,用于构建桌面应用程序。 首先,我们需要理解HTTP POST...

    Android例子源码httpclient获取到JSON数据并展示到ListView

    总结起来,这个Android示例源码展示了如何使用HttpClient获取JSON数据,解析这些数据,转换成Java对象,然后在ListView中展示。它涵盖了网络请求、JSON解析、UI更新和异步处理等多个关键知识点,是学习Android网络...

    SringMVC的经典例子(集成日志、json解析功能)

    为了处理JSON,Controller方法接受JSON格式的请求,使用Jackson将JSON数据转化为Java对象,执行业务逻辑后再将结果转化为JSON返回。最后,使用Spring Test进行测试,确保所有功能正常工作。 通过这个例子,新手可以...

Global site tag (gtag.js) - Google Analytics