问题描述
好吧,我编辑我的$ C $词不明白的错误,但的MessageBox.show返回任何空盒子。也许我需要添加一些东西,在引用字符串?我不明白什么是引荐,我应该放在那里。我有一个主要的即时通讯已经在我的code。使用它。最关键的是一个长字符串,在我的codeI使用它的IM不与引荐使用。为什么dosent翻译的单词喜?
使用系统;
使用System.Collections.Generic;
使用System.ComponentModel;
使用System.Data这;
使用System.Drawing中;
使用System.Linq的;
使用System.Text;
使用System.Windows.Forms的;
使用System.Globalization;
使用System.IO;
使用System.Net;
使用的System.Web;
使用System.Web.Script.Serialization;
命名空间WindowsFormsApplication2
{
公共部分类Form1中:形态
{
私人JavaScriptSerializer _Serializer =新JavaScriptSerializer();
公共Form1中()
{
的InitializeComponent();
串F = TranslateText(喜,英语,德国,,);
的MessageBox.show(F);
}
私人无效Form1_Load的(对象发件人,EventArgs的)
{
}
公共字符串TranslateText(字符串的inputText,串sourceLanguage,串destinationLanguage,串引荐,串apiKey)
{
字符串requestUrl =的String.Format(
"http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q={0}&langpair={1}|{2}&key={3}",
HttpUtility.UrlEn code(inputText的),
sourceLanguage.ToLowerInvariant(),
destinationLanguage.ToLowerInvariant(),
apiKey
);
尝试
{
HttpWebRequest的HTTP =(HttpWebRequest的)HttpWebRequest.Create(requestUrl);
http.Referer =引荐;
HttpWebResponse响应=(HttpWebResponse)http.GetResponse();
使用(StreamReader的SR =新的StreamReader(response.GetResponseStream()))
{
字符串responseJson = sr.ReadToEnd();
VAR翻译= this._Serializer.Deserialize<Milkshake.Integration.Google.GoogleAjaxResponse<Milkshake.Integration.Google.Translate.TranslationResponse>>(responseJson);
如果(翻译= NULL和放大器;!&安培; translation.ResponseData = NULL和放大器;!&安培; translation.ResponseData.ResponseStatus ==的HTTPStatus code.OK)
{
返回translation.ResponseData.TranslatedText;
}
其他
{
返回的String.Empty;
}
}
}
抓住
{
返回的String.Empty;
}
}
}
}
-
您可以使用WebClient.
-
或者(如果你需要更细粒度地控制要求)HttpWebRequest
-
或者HttpClient在System.Net.Http.dll。
下面是一个翻译到HttpWebRequest的(需要,而不是Web客户端,以便设置引荐)。 (使用System.Net和System.IO):
HttpWebRequest的HTTP =(HttpWebRequest的)HttpWebRequest.Create(requestUrl))
http.Referer =引荐;
HttpWebResponse响应=(HttpWebResponse)http.GetResponse();
使用(StreamReader的SR =新的StreamReader(response.GetResponseStream()))
{
字符串responseJson = sr.ReadToEnd();
//更多的东西
}
Ok i edited my code i dont get errors but the messageBox.Show return nothing empty box.Maybe i need to add something in the referrer string ? I didnt understand what is the referrer and what should i put there. And i have a key already im using it in my code.The key is a long string and im using it in my code i dont use with the referrer. Why it dosent translate the word "hi" ?
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;
}
}
}
}
You can use WebClient.
Or (if you need more fine-grained control over the request) HttpWebRequest
Or, HttpClient in System.Net.Http.dll.
Here's a "translation" to HttpWebRequest (needed rather than WebClient in order to set the referrer). (Uses System.Net and 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
}
这篇关于HttpClient的并不在.NET 4.0中存在:我该怎么办?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!