带有JSON数据的Java vs C#HTTP请求 [英] Java vs C# HTTP request with JSON data

查看:315
本文介绍了带有JSON数据的Java vs C#HTTP请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图将Java程序转换为C#。此程序使用HTTP POST将JSON对象发送到服务器。 Java程序运行正常。返回200.但是C#程序返回400(不良请求)。可能是什么原因

Im trying to convert Java program to C#. This programe sent JSON object to server using a HTTP POST. Java program works fine. return 200. But C# program return 400 (bad request). What can be the cause

Java代码

String base_url = "https://test-url.com";
String username = "test-user";
String password = "test-pass";
String client_id = "test-client";
String client_secret = "test-key";
String loginUrl = base_url + "session/login";

Charset utf8 = Charset.forName("UTF-8");
ContentType jason_content_type = ContentType.create("application/json", utf8); 
try {
    HttpClient c = HttpClients.custom().setUserAgent(client_id + "/1.0").build();
    HttpPost p = new HttpPost(loginUrl);
    String json_str = "{" + "\"userId\":\"" + username + "\"," + "\"password\":\"" + password + "\"," + "\"clientId\":\"" + client_id + "\"," + "\"clientSecret\":\"" + client_secret + "\"" + "}";
    p.setEntity(new StringEntity(json_str, jason_content_type));
    HttpResponse r = c.execute(p);
    int status = r.getStatusLine().getStatusCode(); 
} catch (IOException e) {
    System.out.println(e);
}

C#代码

    string base_url = "https://test-url.com";
    string username = "test-user";
    string password = "test-pass";
    string client_id = "test-client";
    string client_secret = "test-key";
    string login_url = base_url + "session/login";

    var httpWebRequest = (HttpWebRequest)WebRequest.Create(login_url);
    httpWebRequest.ContentType = "application/json";
    httpWebRequest.Method = WebRequestMethods.Http.Post;
    httpWebRequest.UserAgent = client_id + "/1.0";
    httpWebRequest.ProtocolVersion=HttpVersion.Version11;

    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream(), Encoding.UTF8))
    {
    string json_str = "{" + "\"userId\":\"" + username + "\"," + "\"password\":\"" + password + "\"," + "\"clientId\":\"" + client_id + "\"," + "\"clientSecret\":\"" + client_secret + "\"" + "}";
    streamWriter.Write(json_str);
    streamWriter.Flush();
    streamWriter.Close();

    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
    {
      var result = streamReader.ReadToEnd();
    }
}


推荐答案

尝试在C#中添加:

httpWebRequest.ContentType = "application/x-www-form-urlencoded";

这篇关于带有JSON数据的Java vs C#HTTP请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆