本文介绍了HttpClient的并不在.NET 4.0中存在:我该怎么办?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好吧,我编辑我的$ 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;
            }
        }
    }
}
解决方案

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中存在:我该怎么办?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 06:08