2011-10-26 15 views
44

API mà tôi đang cố gắng gọi yêu cầu tôi làm một POST nhưng có một thân trống. Tôi mới sử dụng WCF Web API HttpClient và tôi dường như không thể tìm ra mã viết có thể làm một bài đăng với một thân trống. Tôi tìm thấy tài liệu tham khảo cho một số HttpContent.CreateEmpty() phương pháp, nhưng tôi không nghĩ rằng đó là cho mã API HttpClient Web API kể từ khi tôi dường như không thể tìm thấy phương pháp đó.Đăng một cơ thể rỗng lên REST API qua HttpClient

+0

HttpContent.CreateEmpty là từ nguyên mẫu HttpClient cũ là một phần của bộ khởi động REST. Thật không may là không có tương đương trong HttpClient mới. –

Trả lời

40

Sử dụng StringContent hoặc ObjectContent mà xuất phát từ HttpContent hoặc bạn có thể sử dụng null như HttpContent (xem this comment).

+2

Sử dụng StringContent với chuỗi trống đã hoạt động. Cảm ơn! –

+0

Có vẻ như đây chỉ là trong .NET framework 4.5? http://msdn.microsoft.com/en-us/library/system.net.http.stringcontent(v=VS.110).aspx – dan

+0

Nó sẽ xuất xưởng với WCF Web API nhưng tôi nghĩ rằng một số "phần tốt" sẽ biến nó thành khung chính. –

-4

Tôi nghĩ tự động nếu phương pháp web của bạn không có tham số hoặc tất cả đều phù hợp với mẫu URL.

Ví dụ tuyên bố này gửi cơ thể trống rỗng:

[OperationContract] 
    [WebGet(UriTemplate = "mykewlservice/{emailAddress}", 
    RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, 
    BodyStyle = WebMessageBodyStyle.Wrapped)] 
    void GetStatus(string emailAddress, out long statusMask); 
+0

Tôi đang cố GỬI một cơ thể trống. Phương thức HttpClient.Post() yêu cầu một URI và một đối tượng HttpContent. Tôi không phải là những gì để vượt qua như HttpContent khi tôi không muốn gửi bất cứ điều gì. –

+0

Vì vậy, bạn không sử dụng WCF. Điều đó thậm chí còn dễ dàng hơn: ... HttpWebRequest request = (HttpWebRequest) WebRequest.Create ("http: // ..."); request.Method = "POST"; HttpWebResponse respose = (HttpWebResponse) request.GetResponse(); ... bạn đưa ra phản hồi –

+1

Tôi đang sử dụng HttpClient, không phải HttpWebRequest. Sử dụng StringContent với một chuỗi rỗng làm việc. –

27

Did này trước đây, chỉ cần giữ cho nó đơn giản:

Task<HttpResponseMessage> task = client.PostAsync(url, null); 
+0

Điều này sạch hơn câu trả lời được chấp nhận, và nên được bỏ phiếu. –

2

đã phát hiện ra rằng:

công tác nhiệm vụ = client.PostAsync (url, null);

Thêm null vào phần thân yêu cầu không thành công trên WSO2. Thay thế bằng:

Tác vụ nhiệm vụ = ứng dụng khách.PostAsync (url, new {});

Và hoạt động.