HttpClient не существует in.net 4.0: что я могу сделать?
Ok я отредактировал свой код, я не получаю ошибок, но messageBox.Показать вернуть пустую коробку. Может быть, мне нужно добавить что-то в строку referrer ? Я не понимал, что такое реферер и что я должен туда положить. И у меня уже есть ключ, который я использую в своем коде. Ключ-длинная строка, и я использую ее в своем коде, который я не использую с реферером. Почему это dosent перевести слово "привет"?
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;
}
}
}
}
5 ответов
можно использовать WebClient.
или (если вам нужен более точный контроль над просьбой) HttpWebRequest
или С помощью HttpClient in System.Net.Http.dll.
вот "перевод" на HttpWebRequest (требуется, а не WebClient для установки реферера). (Использует System.Net и Система.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
}
Я неоднократно использовал HttpClient в приложениях .NET 4.0. Если вы знакомы с NuGet, вы можете сделать пакет установки Microsoft.Сеть.Http, чтобы добавить его в свой проект. См. ссылку ниже для получения дополнительной информации.
ссылаясь на ответы выше, я только добавляю это, чтобы помочь прояснить вещи. Можно использовать HttpClient из .Net 4.0, и вы должны установить пакет из здесь
однако текст очень запутан и противоречит сам себе.
этот пакет не поддерживается в 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
Портативное Класс Библиотеки
игнорировать то, что это способы таргетинга .Net 4.5. Это неправильно. Пакет Все об использовании HttpClient в .Net 4.0. Однако вам может потребоваться использовать VS2012 или выше. Не уверен, что он работает в VS2010, но это может стоить тестирования.
читать это...
портативный HttpClient для .NET Framework и Windows Phone
параграф использование HttpClient в .NET Framework 4.0 или Windows Phone 7.5 http://blogs.msdn.com/b/bclteam/archive/2013/02/18/portable-httpclient-for-net-framework-and-windows-phone.aspx
соглашаясь с комментарием TrueWill на отдельный ответ, лучший способ, который я видел, чтобы использовать систему.сеть.http в целевом проекте .NET 4 в текущей Visual Studio-это Install-Package Microsoft.AspNet.WebApi.Client -Version 4.0.30506