.net 4.0中不存在HttpClient:我该怎么办?

好吧,我编辑我的代码我不会得到错误,但messageBox.Show返回什么都没有空框。 也许我需要在引用string中添加一些东西? 我不明白什么是推荐人,我应该放在那里。 我有一个密钥已经即时在我的代码中使用它。 关键是一个很长的string,即时通讯使用它在我的代码我不使用引用。 为什么它剂量翻译单词“嗨”?

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Globalization; using System.IO; using System.Net; using System.Web; using System.Web.Script.Serialization; namespace WindowsFormsApplication2 { public partial class Form1 : Form { private JavaScriptSerializer _Serializer = new JavaScriptSerializer(); public Form1() { InitializeComponent(); string f = TranslateText("hi", "English", "German", "", ""); MessageBox.Show(f); } private void Form1_Load(object sender, EventArgs e) { } public string TranslateText(string inputText, string sourceLanguage, string destinationLanguage, string referrer, string apiKey) { string requestUrl = string.Format( "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q={0}&langpair={1}|{2}&key={3}", HttpUtility.UrlEncode(inputText), sourceLanguage.ToLowerInvariant(), destinationLanguage.ToLowerInvariant(), apiKey ); try { HttpWebRequest http = (HttpWebRequest)HttpWebRequest.Create(requestUrl); http.Referer = referrer; HttpWebResponse response = (HttpWebResponse)http.GetResponse(); using (StreamReader sr = new StreamReader(response.GetResponseStream())) { string responseJson = sr.ReadToEnd(); var translation = this._Serializer.Deserialize<Milkshake.Integration.Google.GoogleAjaxResponse<Milkshake.Integration.Google.Translate.TranslationResponse>>(responseJson); if (translation != null && translation.ResponseData != null && translation.ResponseData.ResponseStatus == HttpStatusCode.OK) { return translation.ResponseData.TranslatedText; } else { return String.Empty; } } } catch { return String.Empty; } } } } 
  • 您可以使用WebClient

  • 或者(如果你需要更细粒度的控制请求) HttpWebRequest

  • 或者,System.Net.Http.dll中的HttpClient

这里是一个“HttpWebRequest”(需要而不是WebClient来设置引用)的“转换”。 (使用System.Net和System.IO):

  HttpWebRequest http = (HttpWebRequest)HttpWebRequest.Create(requestUrl)) http.Referer = referrer; HttpWebResponse response = (HttpWebResponse )http.GetResponse(); using (StreamReader sr = new StreamReader(response.GetResponseStream())) { string responseJson = sr.ReadToEnd(); // more stuff } 

我已经在.NET 4.0应用程序中多次使用HttpClient。 如果您熟悉NuGet,则可以执行Install-Package Microsoft.Net.Http将其添加到您的项目中。 请参阅下面的链接进一步的细节。

http://nuget.org/packages/Microsoft.Net.Http

参考上面的答案,我只是添加这个来帮助澄清事情。 可以使用.Net 4.0中的HttpClient,并且必须从这里安装软件包

然而,文本是非常混乱和自相矛盾的。

此包在Visual Studio 2010中不受支持,并且仅在使用使用此包的库时才需要用于定位.NET Framework 4.5,Windows 8或Windows Phone 8.1的项目。

但是在它下面说明这些是支持的平台。

支持的平台:

  • .NET Framework 4

  • Windows 8

  • Windows Phone 8.1

  • Windows Phone Silverlight 7.5

  • Silverlight 4

  • 便携式类库

忽略什么样的方式瞄准。净4.5。 这是错误的。 该包是所有关于在.Net 4.0中使用HttpClient的。 但是,您可能需要使用VS2012或更高版本。 不知道它是否在VS2010中工作,但这可能值得testing。

读这个…

用于.NET Framework和Windows Phone的可移植HttpClient

请参阅段落在.NET Framework 4.0或Windows Phone 7.5上使用HttpClient http://blogs.msdn.com/b/bclteam/archive/2013/02/18/portable-httpclient-for-net-framework-and-windows-phone的;.aspx