我正在使用ASP.NET 5和MVC 6.我想使用HttpClient,但我注意到有两个NuGet包提供。 我使用哪一个? System.Net.Http Microsoft.Net.Http
所以,我得出的结论是,Apache HttpComponents 4是我遇到的最过度的API之一。 看起来像他们应该是简单的事情是采取数百行代码(我仍然不知道资源得到清理正确)。 另外,它希望我做这样的事情: List<NameValuePair> qparams = new ArrayList<NameValuePair>(); qparams.add(new BasicNameValuePair("q", "httpclient")); qparams.add(new BasicNameValuePair("btnG", "Google Search")); qparams.add(new BasicNameValuePair("aq", "f")); qparams.add(new BasicNameValuePair("oq", null)); URI uri = URIUtils.createURI("http", "www.google.com", -1, "/search", URLEncodedUtils.format(qparams, "UTF-8"), null); 哪,只是…不。 我知道这是Java,而我们并没有涉及到整个简单的事情,但是这有点多。 更不用说jar子高达700KB。 无论如何,足够的咆哮,我想看看人们与其他HTTP客户端库有什么样的经验? 我知道的是: Jetty , Hotpotato和AsyncHttpClient 。 这是服务器端使用,我最感兴趣的是许多并发获取和大文件传输的性能。 任何build议? PS我知道古老的HttpClient 3.1仍然存在,但我想使用一些支持。 更新 @oleg:这是文档build议的内容: HttpClient httpclient = new DefaultHttpClient(); try { […]
我有一个web服务正在接受与XML的POST方法。 它工作正常,然后在一些随机的场合,它没有通信到服务器抛出IOException消息The target server failed to respond 。 随后的调用工作正常。 大多数情况下,当我打电话,然后离开我的应用程序闲置了10-15分钟。 我之后做的第一个调用返回这个错误。 我试了几件事 我设置了重试处理程序 HttpRequestRetryHandler retryHandler = new HttpRequestRetryHandler() { public boolean retryRequest(IOException e, int retryCount, HttpContext httpCtx) { if (retryCount >= 3){ Logger.warn(CALLER, "Maximum tries reached, exception would be thrown to outer block"); return false; } if (e instanceof org.apache.http.NoHttpResponseException){ Logger.warn(CALLER, "No response from server […]
我想从交stream#WPF桌面应用程序执行一个post到我的WebAPI。 不pipe我做什么,我都会得到 { “错误”: “unsupported_grant_type”} 这是我所尝试过的(我试过了我能find的所有东西): 另外开发web api目前活跃testing: http : //studiodev.biz/ 基地http客户端对象: var client = new HttpClient() client.BaseAddress = new Uri("http://studiodev.biz/"); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/plain")); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*")); 用下面的发送方法: var response = await client.PostAsJsonAsync("token", "{'grant_type'='password'&'username'='username'&'password'='password'"); var response = await client.PostAsJsonAsync("token", "grant_type=password&username=username&password=password"); 之后,失败了,我做了一些Googlesearch,并尝试: LoginModel data = new LoginModel(username, password); string json = JsonConvert.SerializeObject(data); await client.PostAsync("token", new […]
我正在开发一个应用程序(winforms C#.NET 4.0),我通过一个简单的HTTP请求从第三方访问查找function。 我用一个参数调用一个url,并返回一个小string,查找的结果。 很简单。 然而挑战是我必须做很多这样的查找(几万),而且我想限制所需的时间。 所以我想平行运行请求(比如10-20)。 我使用一个ThreadPool来做到这一点,我的代码的短版本看起来像这样: public void startAsyncLookup(Action<LookupResult> returnLookupResult) { this.returnLookupResult = returnLookupResult; foreach (string number in numbersToLookup) { ThreadPool.QueueUserWorkItem(lookupNumber, number); } } public void lookupNumber(Object threadContext) { string numberToLookup = (string)threadContext; string url = @"http://some.url.com/?number=" + numberToLookup; WebClient webClient = new WebClient(); Stream responseData = webClient.OpenRead(url); LookupResult lookupResult = parseLookupResult(responseData); returnLookupResult(lookupResult); […]
下面的代码抛出一个IOException消息:“指定的registry项不存在”。 HttpClient client = new HttpClient(); Uri uri = new Uri("http://www.google.com"); client.GetAsync(uri); 这只是在Main中的一个控制台应用程序。 它看起来像错误正在由mscorlib.dll!Microsoft.Win32.RegistryKey.Win32Error(int errorCode,stringstr)引发。 我不知道为什么这个错误被抛出或如何开始debugging。 编辑堆栈跟踪: 在Microsoft.Win32.RegistryKey.Win32Error(Int32 errorCode,String str) 这只是一条线,没有内在的含义。 调用堆栈是: mscorlib.dll!Microsoft.Win32.RegistryKey.Win32Error(int errorCode, string str) + 0x189 bytes mscorlib.dll!Microsoft.Win32.RegistryKey.GetValueKind(string name) + 0x7f bytes System.dll!System.Net.HybridWebProxyFinder.InitializeFallbackSettings() + 0x9e bytes [Native to Managed Transition] [Managed to Native Transition] System.dll!System.Net.AutoWebProxyScriptEngine.AutoWebProxyScriptEngine(System.Net.WebProxy proxy, bool useRegistry) + 0xd0 bytes System.dll!System.Net.WebProxy.UnsafeUpdateFromRegistry() + […]
我正在使用谷歌API客户端Java 1.2.1-alpha来执行一个POST请求,并且当我执行()HttpRequest时得到以下的堆栈跟踪。 它发生之后立即捕捉并忽略从以前的POST到同一个URL的403错误,并重新使用传输的后续请求。 (这是在一个循环插入多个条目到相同的ATOM饲料)。 在403之后,我应该做些什么来“清理”? Exception in thread "main" java.lang.IllegalStateException: Invalid use of SingleClientConnManager: connection still allocated. Make sure to release the connection before allocating another one. at org.apache.http.impl.conn.SingleClientConnManager.getConnection(SingleClientConnManager.java:199) at org.apache.http.impl.conn.SingleClientConnManager$1.getConnection(SingleClientConnManager.java:173) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:390) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554) at com.google.api.client.apache.ApacheHttpRequest.execute(ApacheHttpRequest.java:47) at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:207) at au.com.machaira.pss.gape.RedirectHandler.execute(RedirectHandler.java:38) at au.com.machaira.pss.gape.ss.model.records.TableEntry.executeModification(TableEntry.java:81) 为什么下面的代码试图获得一个新的连接?
请有人请介绍一下HTTP实体究竟是什么? 我正在阅读HTTPClient文档,但我不明白这是什么意思?
我正在构build一个类库来与API进行交互。 我需要调用API并处理XML响应。 我可以看到使用HttpClient进行asynchronous连接的好处,但是我正在做的是纯粹的同步,所以看不到比HttWebRequests任何显着的好处。 如果任何人都可以摆脱任何光线,我将不胜感激。 为了这个原因,我不是一个使用新技术的人。
我想从我的Web应用程序调用一个Web API。使用.net 4.5和编写代码时,我得到一个错误HttpClient不包含一个定义PostAsJsonAsync方法 HttpClient client = new HttpClient(); client.BaseAddress = new Uri("http://localhost:51093/"); client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")); var user = new Users(); user.AgentCode = 100; user.Remarks = "Test"; user.CollectionDate = System.DateTime.Today; user.RemittanceDate = System.DateTime.Today; user.TotalAmount = 1000; user.OrgBranchID = 101; var response = client.PostAsJsonAsync("api/AgentCollection", user).Result; 我收到错误消息: Error: 'System.Net.Http.HttpClient' does not contain a definition for 'PostAsJsonAsync' and no […]