- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 json 对象从 java 客户端发送到 C# WebApi,但输入参数为 null。java代码:
ObjectMapper mapper = new ObjectMapper();
Gson gson = new Gson();
String json = gson.toJson(per);
HttpClient httpclient = new DefaultHttpClient();
List<NameValuePair> qparams = new ArrayList<NameValuePair>();
qparams.add(new BasicNameValuePair("person", json.toString()));
HttpGet httpPost = new HttpGet("http://naviserver.azurewebsites.net/api/Person/Get?" + URLEncodedUtils.format(qparams, "UTF-8"));
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
httpPost.setHeader(
"Authorization",
"Bearer TokenRemovedBecauseUseless");
org.apache.http.HttpResponse httpResponse = httpclient.execute(httpPost);
WebApi 方法:
public List<String> Get([FromUri]Person person)
{}
有人可以告诉我如何发送 json 对象吗?
最佳答案
问题是 WebApi 不期望 JSON 格式的 person 对象。通过将 FromUri 与复杂对象一起使用,期望 url 具有 Person 中每个字段的查询参数。
有一个很好的例子 here关于它是如何工作的。
基本上,您会希望查询参数如下所示:
http://naviserver.azurewebsites.net/api/Person/Get?name=dave&age=30
在 Java 中:
qparams.add(new BasicNameValuePair("name", person.getName()));
qparams.add(new BasicNameValuePair("age", String.valueOf(person.getAge())));
如果您想以 JSON 格式发送人员,更好的方法是使用 HTTP POST 并在正文中设置 JSON。然后在 WebApi 中,您的方法将如下所示:
public HttpResponseMessage Post([FromBody]Person person)
然后,您还必须更改 Java 客户端以发送 POST 请求。
HttpClient httpClient = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost("http://naviserver.azurewebsites.net/api/Person");
Person person = new Person("dave", 30);
Gson gson = new Gson();
String json = gson.toJson(person);
StringEntity body = new StringEntity(json);
httpPost.setEntity(body);
HttpResponse response = httpClient.execute(httpPost);
关于java - 将 json 对象添加到 Java HttpGet 请求到 C# WebApi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29050795/
公共(public)类 ServiceHandler { static String response = null; public final static int GET = 1; public
为什么在WebApi框架中使用HttpGet而不是HttpPost? 我很清楚 Post 或 Get 类型之间的区别,一个是通过 url,另一个不是(作为基本理解) 但我也知道主要区别(可以在服务器上
我正在尝试做一件非常简单的事情,几天前它还在工作。 CloseableHttpClient client = HttpClientBuilder.create().build();
我正在尝试从 html 编写此脚本,但无法得到结果,有什么问题吗? function httpGet() { var httpClient = util.newHttpClient(); v
我正在尝试从以下 URL 获取文本响应: http://translate.google.cn/translate_a/single?client=t&sl=zh-CN&tl=en&dt=t&tk=2
我的 MainActivity.java 文件中有这个: public static void getLatestVersion() { try { Strin
我正在尝试使用 GET 将参数发送到脚本,但我收到此错误: java.lang.IllegalStateException: Target host must not be null, or set
我正在使用 Slim 框架通过 GET 方法在 Android 中执行 REST API。我对检索表的所有值没有任何问题,例如 cars。 当我尝试通过 id 访问 Car 的 name 时,问题就来
我正在努力通过查询字符串获取数据。我已经完成了 httppost,但我还没有尝试使用 httpget。但我不能。 List nameValuePairs = new ArrayList();
因此,我使用的是另一篇旧帖子中的以下代码,但其中一部分有问题,行:HttpGet request = new HttpGet(url); 不起作用。在 url 点我放了类似 www.stackover
是否可以在 HttpGet 中使用管道字符? 我有一个用竖线分隔的经纬度列表,例如53.42290885462988,-1.4404749870300293|53.39965626194152,-1.
我想从我的 Android 应用程序中执行 httpGet,但我没有得到任何响应,当我从浏览器中执行相同的 httpGet 时它起作用了。我还使用 chrome 扩展 Postman 来测试我发送的
我正在使用 RESTFul HttpGet 服务 导入org.apache.http.client.methods.HttpGet; 我创建了一个函数来查询另一台计算机上的服务。该调用工作正常,但是我
Startup.cs,样板: app.UseMvc(routes => { routes.MapRoute( name: "default", template
我希望能够将复杂类型作为我的 HttpGet 方法的参数进行处理。 当 api 方法不接受任何参数时,方法 pickNFirstElements 起作用,但当我尝试传递对象时不起作用。 我有一个想法,
让我先概括一下情况: 我有一个基本的 Controller ,如下所示: public class SearchRequestController : ApiController { publ
我正在用 Ruby 编写一些代码...但我无法弄清楚基本身份验证如何与 Crystal-lang 一起工作。 在 ruby 中,我必须始终使用 request.basic_auth 但这在 Cry
我正在开发 Uber API,并尝试使用 here 中的说明获取用户个人资料。 以下curl命令工作正常,可以从uber获取用户信息: curl -H "Authorization: Bearer Y
我正在使用 HttpGet 返回一个文件,并且 HttpGet 不允许参数是 URL,它必须是 URL,但是我面临的问题是我必须*使用 httpclient,并且我需要能够在 URI/URL 中放置特
这个问题已经有答案了: How can I fix 'android.os.NetworkOnMainThreadException'? (65 个回答) 已关闭10 年前。 我正在尝试向 http:
我是一名优秀的程序员,十分优秀!