当前位置: 首页 > 知识库问答 >
问题:

RestSharp不会得到响应的数据或内容

路伟
2023-03-14

我的web服务中有一个路由,它接收带有Json正文的POST请求,并返回Json格式的简单数组。我用邮递员来测试路线,效果非常好。但当我使用RestSharp时,它不会得到任何内容(或反序列化情况下的数据)。

这是我的C#代码:

public static async Task<string> UpdateProfile(Profile user, string serviceUrl)
    {

        string bodyraw = JsonConvert.SerializeObject(user)

        var client = new RestClient(serviceUrl);
        var request = new RestRequest();
        request.Method = Method.POST;
        request.Parameters.Clear();
        request.AddParameter("application/json", bodyraw, ParameterType.RequestBody);

        request.OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; };

        var response = await client.ExecuteTaskAsync<Profile>(request);

        return response.Data.Address;            

    }

下面是Profile类:

 public class Profile
{
    public string Name { get; set; }
    public string Family { get; set; }
    public string Email { get; set; }
    public string Mobile { get; set; }
    public string Address { get; set; }
    public string Postal_code { get; set; }
    public string Education { get; set; }
    public string Gender { get; set; }
    public string Age { get; set; }
    public string Default_contact { get; set; }

    public override string ToString()
    {
        return string.Concat(Name," " ,Family, " ", Address);
    }
}

这是邮递员的输出:

{
    "Name": "Holma",
    "Family": "Kool",
    "Email": "dr@gmail.com",
    "Mobile": "09063094744",
    "Address": "some city- basic av. sq 60",
    "Postal_code": "10246666",
    "Education": "1",
    "Gender": "male",
    "Age": "35"
}

我使用的PHP代码是:

函数silverum\u更新用户配置文件($request){

$parameters = $request->get_json_params();// this is a WordPress method and works just fine

$name=sanitize_text_field($parameters['name']);
$family=sanitize_text_field($parameters['family']);
$email=sanitize_text_field($parameters['email']);
$mobile=sanitize_text_field($parameters['mobile']);
$address=sanitize_text_field($parameters['address']);
$postal_code=sanitize_text_field($parameters['postal_code']);
$education=sanitize_text_field($parameters['education']);
$gender=sanitize_text_field($parameters['gender']);
$age=sanitize_text_field($parameters['age']);

$extdp = [
    "Name"=>$name,
    "Family"=>$family,
    "Email"=>$email,
    "Mobile"=>$mobile,
    "Address"=>$address,
    "Postal_code"=>$postal_code,
    "Education"=>$education,
    "Gender"=>$gender,
    "Age"=>$age
];


return $extdp;

}

当PHP方法返回“Parameter”时,它是OK的,PostMan和RestSharp都可以看到输出内容,但当该方法返回新数组时,只有PostMan能够接收returnd对象。我在这个问题上花了几个小时,但没有取得任何进展。请帮忙。

共有1个答案

史磊
2023-03-14

尝试在RestRequest对象中使用AddJsonBody()方法,而不是手动添加参数。

public static async Task<string> UpdateProfile(Profile user, string serviceUrl)
{
    var client = new RestClient(serviceUrl);
    var request = new RestRequest();
    request.Method = Method.POST;
    request.AddJsonBody(user);

    request.OnBeforeDeserialization = resp => { resp.ContentType = "application/json"; };

    var response = await client.ExecuteAsync<Profile>(request);

    return response.Data.Address;            
}
 类似资料:
  • 我正在为我的API构建一些简单的负载测试,为了确保一切正常,我还想查看响应标头和数据。但是当我使用命令行运行测试,然后重新打开GUI以添加查看结果树侦听器并加载创建的文件时,响应标头或响应数据为空。 我在user.properties中输入了以下值(也尝试在jmeter.properties中取消这些值的注释并在那里更改它们,结果相同) 但在打开结果文件时仍然没有运气。我尝试在 -l 标记之后将文

  • Vue的 响应性语法糖 文档中 响应式 props 解构 部分提到了: 和 .value 类似,为了保持响应性,你始终需要以 props.x 的方式访问这些 prop。这意味着你不能够解构 defineProps 的返回值,因为得到的变量将不是响应式的、也不会更新。 真的是这样吗?解构 defineProps 的返回值得到的变量将不是响应式,也不会更新。 例子1 父组件响应式数据改变 => 子组件

  • 前段时间,我设置了一个带有一些子域的站点(,...) 为什么辅助DNS没有给出子域的答案?它给出了像“test.example.com”这样的旧子域的答案。我必须如何解释SOA响应?什么意思?

  • 我是不是漏掉了什么?我应该如何使用这些异步方法来处理这样的错误响应呢?

  • Vue中最为开发者们所津津乐道的特性就是其数据响应特性,Vue中的数据响应特性主要包含:响应数据赋值、watch观察数据和computed计算属性,该能力让我们能够以非常直观简洁的方式建立起数据与数据之间/数据与视图之间的绑定依赖关系,大幅提升复杂webapp的开发体验和开发效率。 受此启发,Mpx通过增强的方式在小程序开发中提供了完整的数据响应特性,在2.5.x版本前,Mpx通过mobx实现内部

  • 我试图使用Spring 4实现简单的Web服务。但是我的用户服务似乎不起作用。 我有如下配置: 我的内存HSQLDB的持久性配置如下: 我有一个实体。这是我的存储库: 我还在9999端口上安装了一个嵌入式jetty来运行这项服务。 当jetty启动时,我转到或或类似的smth,就会出现错误404方法也不起作用。 我认为这是因为Servlet Dispatcher不知道我公开的存储库。但我也不知道如