如何从命令行

时间:2017-03-28 06:08:28

标签: json curl post file-upload http-post

我正在尝试将cURL中的POST请求发送到API,同时遵循给定的要求。

  

准则:

     
      
  • 提交的内容类型应为application / json

  •   
  • 以下是身体的结构:

         
        
    • 名称:字符串

    •   
    • PhoneNumber:String

    •   
    • 电子邮件:字符串

    •   
    • 职位:字符串

    •   
    • Urls:包含以下属性的对象数组

           
          
      • 类型:字符串

      •   
      • 链接:字符串

      •   
    •   
  •   
  • 所有字段均为

  •   
  • 至少有一个带有"简历"的网址类型是必需的

  •   
  • 对于简历,我们要求提交的格式为PDF格式

  •   
  • 如果您的提交成功,您将收到HTTP 202回复

  •   

我相信我对我想用JSON发送的所有数据都有正确的语法,但我不确定如何在同一请求中上传PDF。

到目前为止,这是我的语法。

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -
     X POST -d '{"json":{"Name":"data"}}' -d '{"json":
     {"PhoneNumber":"data"}}' -d '{"json":{"Email":"data"}}' -d '{"json":
     {"Position":"data"}}' https://example

当我在命令行输入此内容时,我收到了一条“HTTP 400错误请求”#39;回应当然我正在拍摄202回应。

我主要用Python和R编程,所以使用cURL对我来说是新的。任何帮助,所以我可以发送此应用程序非常感谢。如果您需要更多信息,请告诉我。

2 个答案:

答案 0 :(得分:0)

传递多个-d会使数据片段作为&分隔的参数列表传递,即-d data1 -d data2将导致在http请求体中传递data1&data2

您需要一次性传递整个JSON字符串:

curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X POST
    -d '{"Name":"data", "PhoneNumber":"data", "Email":"data", "Position":"data"}'
    https://example

N.B。注意"之后的结束"Content-Type: application/json

答案 1 :(得分:-1)

试试这个吧!

        try{

            var httpclient = new HttpClient();
            Urls[] url = new Urls[]
            {
                new Urls("Resume", "https://my.pcloud.com/publink/show?code=XZV0YvZyqR708s0VNkTCMigM8AvdyEhE59y")

                };
            var envocdata = new envoc_data
            {
                Name = "Prasanna",
                PhoneNumber = "data",
                Email = "prasannadata@gmail.com",
                Position = "Xamarin Developer",
                Urls = url

            };
            var json = JsonConvert.SerializeObject(envocdata);
            HttpContent httpcontent = new StringContent(json);
            httpcontent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
            var result = await httpclient.PostAsync("http://envoc-apply-api.azurewebsites.net/api/apply", httpcontent);

        }
        catch (Exception ex)
        {
            DisplayAlert("", ""+ex.Message, "Ok");
        }