Tag: rest

使用C#HttpClient api和postman测试之间的区别? 客户端调用适用于邮递员但不适用于C#httpClient getAsync

我正在测试一个rest APIpost,当我在Postman上试用它时效果很好。 但是,在某些情况下(与发布XML数据相关)如果我使用HttpClient API发布,我会收到以下错误: “无法从传输连接读取数据:远程主机强行关闭现有连接。” 但是相同的xml内容在Postman上工作正常,状态正常且响应正确。 任何人都知道使用C#HttpClient api和postman测试之间的区别是什么? 如何配置我的api调用以匹配邮递员的行为? 这里我附上了源代码和Postman截图 public void createLoan() { string baseCreateLoanUrl = @”https://serverhost/create?key=”; var strUCDExport = XDocument.Load(@”C:\CreateLoan_testcase.xml”); using (var client = new HttpClient()) { var content = new StringContent(strUCDExport.ToString(), Encoding.UTF8, Mediatype); string createLoanApi = string.Concat(baseCreateLoanUrl, APIKey); try { var response = client.PostAsync(createLoanApi, content).Result; } catch (Exception ex) { MessageBox.Show(“Error Happened […]

我应该选择哪种格式来请求C#中的API – JSON或XML

我在C#中从REST API请求数据。 API以JSON和XML格式提供相同的数据。 我应该去哪一个? 很清楚我会在JavaScript中选择哪一个。 但在C#中呢? 是否有任何性能优势可以帮助我在C#中选择其中一个或任何良好实践原因? 提前致谢!

无法在C#中反序列化JSON结果。 输入字符串格式错误不正确

我试图将json输出反序列化为C#对象。 JSON结果: {“order”:{“commission”:3.490000,”cost”:4.490000,”duration”:”day”,”extended_hours “:false,”fees”:0.000000,”class”:”equity”,”price”:1.000000,”quantity”:1.000000,”r equest_date”:”2013-11-26T09:43:17.118Z”,”result”:true,”side”:”buy”,”status”:”ok” ,”symbol”:”DIS”,”type”:”limit”}} 我从JSON派生的类: public class Rootobject { public Order Order { get; set; } } public class Order { public float commission { get; set; } public float cost { get; set; } public string duration { get; set; } public bool extended_hours { get; set; } public int fees { […]

我必须向我的Web API REST方法添加显式线程吗?

我创建了一些将由掌上电脑/ Windows CE客户端调用的Web API REST方法。 因此,服务器可能同时受到多个(好的,更像是它,问题是多少)请求。 REST方法是否自动处理这个问题,还是我必须明确添加线程代码,以便一个客户端的请求不会干扰其他人?

UriTemplate WCF

有没有一种简单的方法可以在同一个定义中使用多个UriTemplates。 [WebGet(UriTemplate = “{id}”)] 例如,我想要/ API / {id}和/ API / {id} /来调用相同的东西。 如果有/不在最后我不想要它。

如何在C#中使用WCF REST服务?

我的合同细节如下。 我正在使用Json响应和请求格式,也使用POST方法。 如何编写客户端以在c#中使用此服务。 [OperationContract()] [WebInvoke(UriTemplate = “/RESTJson_Sample1_Sample1Add”, Method = “POST”, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)] int RESTJson_Sample1_Sample1Add(Int32 a, Int32 b, Int32 c);

Microsoft.Http.HttpClient,在重定向上正确发送HTTP身份validation参数

我正在使用Microsoft的HttpClient向第三方RESTful服务发出请求。 除了这一个实例之外,它完美无缺(并且非常容易实现)。 以下是提供商对错误期间发生的情况的细分: “POST到组资源的工作方式是,当它完成时,它会将HTTP 302重定向到组实例资源。看起来正在发生的事情是您的HTTP客户端正在向POST发送正确的身份validation信息,这会创建组资源,但当它处理HTTP 302请求的GET时,它没有发送正确的凭据并得到401响应。你能检查你的客户端库并确保它在重定向上正确发送HTTP身份validation参数吗?“ 这是我的POST代码: HttpClient http = new HttpClient(BASE_URL); http.TransportSettings.Credentials = new NetworkCredential(ACCOUNT_SID, ACCOUNT_TOKEN); HttpResponseMessage httpResponse = http.Post(groupUri, “application/xml”, HttpContent.Create(xml.ToString())); result = httpResponse.Content.ReadAsString(); 这让我想到了我的问题; 如何使用HttpClient类获取要在此GET重定向上发送的身份validation参数?

当HttpRequest.Content.IsMimeMultipartContent()返回true时返回false

我需要将一个HTTP请求作为MultiPartFormData发送到REST控制器。 它工作正常,但现在我的控制器上的检查声称请求的类型不正确,即使我在调试器中看到请求的类型正确。 以供参考: 这是调用它的控制台应用程序代码: using System; using System.IO; using System.Net.Http; using System.Net.Http.Headers; using System.Text; namespace QuickUploadTestHarness { class Program { static void Main(string[] args) { using (var client = new HttpClient()) using (var content = new MultipartFormDataContent()) { // Make sure to change API address client.BaseAddress = new Uri(“http://localhost”); // Add first file content var […]

Firebase流式REST连接是否会计入并发连接限制?

在最近的一个问题中,有人指出Firebase定价文档指出: REST API请求不计入您的连接限制 我理解(并欣赏)这个语句似乎意味着什么:针对REST API的GET,PUT,POST和DELETE请求通常用于对数据的非实时操作,例如下载数据以备份或批量计算。 这些通常是不常见的,相对短暂的操作,并且通常应该使实时数据连接的数量相形见绌。 但是,当我们查看Firebase的REST流API时,情况会有所不同。 与REST API的其余部分不同,流式传输显然适用于实时数据连接。 根据上面引用的文档,这些连接不应计入连接限制。 但根据Firebase开发人员对Google网上论坛的评论 : concurrent [connections]是实时客户端或流式REST 我强调的部分似乎暗示使用流式REST API的客户端确实计入连接限制。 为了测试,我编写了一个小型C#客户端,它使用Firebase REST流API来监控节点: var url = “https://.firebaseio.com/clock/.json”; var client = new WebClient(); client.Headers[“Accept”] = “text/event-stream”; using (var stream = client.OpenRead(url)) { using (var reader = new StreamReader(stream)) { string line = null; while (null != (line = reader.ReadLine())) { (DateTime.Now.ToShortTimeString() […]

我可以在具有不同复杂参数类型的Web API中使用多个POST方法吗?

我是Web API的新手……这是我的基本路线: config.Routes.MapHttpRoute( name: “Workitems”, routeTemplate: “api/{controller}/{workitemID}”, defaults: new { controller = “workitems”, workitemID = RouteParameter.Optional } ); 这是我想要的: public HttpResponseMessage Post( [FromBody] FolderModel theModel ) public HttpResponseMessage Post( [FromBody] DocumentModel theModel ) 但是,Web API找不到我的第二个Post方法。 我在这里和谷歌都做了很多搜索,但没有发现任何对我有用的东西(好)。 我知道我可以在第二种方法中添加第二个未使用的参数 – 但这太糟糕了。 如果这是正常的C#代码,那么编译器就可以知道选择b / c哪个方法具有不同的签名。 但Web API不够智能。 我查看了自定义约束,但这似乎不合适。 我也不能使用不同的{actions},因为它违反了我的API的RESTful约束(没有RPC,只有资源)。 我也不能把第二篇文章放在不同的控制器上。 我实现这一点的唯一方法是将FolderModel和DocumentModel包装在父对象中,如下所示: public class WorkitemCreateModel { public DocumentModel Document […]