C#RestSharp PUT请求不发送

时间:2018-01-24 08:47:50

标签: c#

所以我正在尝试向我的API发送一个PUT请求来编辑我的一个表中的一条记录。这对于Postman和swagger页面来说很好。但不知何故,当我试图用C#的webclient做这件事时它不会发送。这是我的代码。

public static void putProductData(string model, Models.Product product)
    {
        //HttpClient client = new HttpClient();
        MultipartFormDataContent mfdc = new MultipartFormDataContent();

        // create the communication to the model from the API.
        string apiposturl = apiurl;
        apiposturl += model;
        apiposturl += "/bewerken";

        var client = new RestClient("http://mayapi.net");
        var request = new RestRequest("/api/products/bewerken", Method.PUT);

        // Zet de headers voor de request.
        // Dit is bij alles hetzelfde met een multipart/form-data requeset.
        request.AddHeader("postman-token", "293a9ff3-e250-e688-e20d-5d16ea635597");
        request.AddHeader("cache-control", "no-cache");
        request.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
        request.AddHeader("Content-Type", "multipart/form-data");
        request.AddHeader("Authorization", "token");
        request.AddHeader("Connection", "Keep-Alive");

        // Vul de parameters met de waardes van heet model.
        request.AddParameter("productNaam", product.ProductNaam);
        request.AddParameter("productPrijs", product.ProductPrijs);
        request.AddParameter("productBeschrijving", product.ProductBeschrijving);
        request.AddParameter("productType", product.ProductType);
        request.AddParameter("productKorting", product.ProductKorting);
        request.AddParameter("productVoorraad", product.ProductVoorraad);
        request.AddParameter("productDirectLeverbaar", product.ProductDirectLeverbaar);
        request.AddFile("productAfbeelding", product.ProductAfbeelding); // Voeg hier het bestandspad in.
        request.AddParameter("productWinkel", product.ProductWinkel);


        //client.Execute(request);
        // Verstuur de request.
        //IRestResponse response = client.Execute(request);

        IRestResponse response = client.Execute(request);
        var content = response.Content; ;
    }

奇怪的是,当我执行它时,Fiddler中没有PUT请求,所以我无法通过Fiddler进行真正的调试。这是响应在带有断点的代码中显示的错误之一:

  

{“请求已中止:请求已取消。”}

我读到这可以通过Connection:Keep-Alive修复,但遗憾的是这对我不起作用。有人可以帮帮我吗?

修改

我认为这可能是一些有用的信息。如果我用RestSharp发送一个post请求它实际上有效,但PUT请求不是

1 个答案:

答案 0 :(得分:0)

我解决了它,它必须对我在API中更新的模型做一些事情。他们处理此代码的人忘了将字段更新为更新的模型。这就是它不发送数据的原因。