2012-04-25 9 views
42

ठीक है मैंने अपना कोड संपादित किया है, मुझे त्रुटियां नहीं मिलती हैं लेकिन संदेश बॉक्स। कुछ भी खाली बॉक्स वापस दिखाएं। शायद मुझे रेफरर स्ट्रिंग में कुछ जोड़ने की ज़रूरत है? मुझे समझ में नहीं आया कि रेफरर क्या है और मुझे वहां क्या रखना चाहिए। और मेरे पास पहले से ही मेरे कोड में इसका उपयोग कर एक कुंजी है। कुंजी एक लंबी स्ट्रिंग है और मैं इसे अपने कोड में उपयोग कर रहा हूं, मैं रेफरर के साथ उपयोग नहीं करता हूं। यह "हाय" शब्द का अनुवाद क्यों करता है?HttpClient .NET 4.0 में मौजूद नहीं है: मैं क्या कर सकता हूं?

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; 
      } 
     } 
    } 
} 
+0

शीर्षक देखना इस सवाल का बहुत स्पष्ट है, लेकिन सवाल स्वयं अस्पष्ट है। माना जाता है कि यह अनुसंधान प्रयास दिखाता है, लेकिन यह सब कुछ है। पाठक को पता लगाने की बजाय कम से कम संदर्भ की एक वाक्य होनी चाहिए। मैंने देखा कि आपने अपना खुद का प्रश्न संपादित किया है, आपको फिर से यह सुनिश्चित करना चाहिए कि अंतिम परिणाम नवागंतुक के लिए पठनीय है। प्रश्नों के लंबे समय तक मूल्य होता है, लेकिन प्रतिभागियों को इसे संभव बनाना होता है। –

उत्तर

39
  • आप WebClient उपयोग कर सकते हैं।

  • या HttpWebRequest

  • या, System.Net.Http.dll में HttpClient (आप अनुरोध पर अधिक कुशल नियंत्रण की जरूरत है)।

यहां HttpWebRequest (संदर्भकर्ता सेट करने के लिए वेब क्लाइंट की बजाय आवश्यक "अनुवाद" अनुवाद "है। (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 
    } 
+1

dbasdeman मैं इस वेब क्लाइंट और httpwebrequest को जानता हूं लेकिन मुझे नहीं पता कि मेरे कोड में httpclient के बजाय इसका उपयोग कैसे किया जाए ... क्या आप मुझे दिखा सकते हैं कि यह मेरे कोड में कैसे करें? धन्यवाद। – user1352869

+0

System.Web.Http .NET 4.5 के लिए है। मेरे पास विजुअल स्टूडियो csharp pro 2010 का उपयोग कर 4.0 आईएम है और मेरे पास .NET 4.5 – user1352869

+0

@ user1352869 gotcha नहीं है। कृपया मेरा अपडेट देखें। – McGarnagle

60

मैं HttpClient में उपयोग किया है .NET 4.0 कई अवसरों पर अनुप्रयोगों। यदि आप NuGet से परिचित हैं, तो आप इसे अपने प्रोजेक्ट में जोड़ने के लिए इंस्टॉल-पैकेज Microsoft.Net.Http कर सकते हैं। अधिक जानकारी के लिए नीचे दिए गए लिंक को देखें।

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

+2

जेएफवाईआई: यह मोनो के साथ काम नहीं करेगा - बस यह पता चला :( – avs099

+0

हाँ ... मोनो के लिए आप HttpWebRequest – cecilphillip

+0

का उपयोग कर सकते हैं यह भी कहता है "यह पैकेज विजुअल स्टूडियो 2010 में समर्थित नहीं है, और केवल परियोजनाओं को लक्षित करने के लिए आवश्यक है .NET Framework 4.5 "। क्या आप जानते हैं कि इस पैकेज के बीच क्या अंतर है, और http://www.nuget.org/packages/HttpClient? – ChrisW

12

ऊपर जवाब का जिक्र करते हुए, मैं केवल यह मदद करने के लिए चीजों को स्पष्ट जोड़ने कर रहा हूँ। .NET 4.0 से HttpClient का उपयोग करना संभव है, और आपको here

से पैकेज स्थापित करना संभव है, हालांकि, पाठ बहुत भ्रम और विरोधाभास है।

यह पैकेज विजुअल स्टूडियो 2010 में समर्थित नहीं है, और केवल इस पैकेज का उपयोग करने वाली लाइब्रेरी का उपभोग करते समय .NET Framework 4.5, Windows 8, या Windows Phone 8.1 को लक्षित करने वाली परियोजनाओं के लिए आवश्यक है।

लेकिन इसके नीचे यह बताता है कि ये समर्थित प्लेटफ़ॉर्म हैं।

समर्थित प्लेटफ़ॉर्म:

  • .NET फ्रेमवर्क 4

  • विंडोज 8

  • विंडोज फोन 8,1

  • विंडोज फोन सिल्वरलाइट 7,5

  • एस ilverlight 4

  • पोर्टेबल कक्षा पुस्तकालय

पर ध्यान न दें क्या यह नेट 4.5 लक्षित करने के बारे तरीके। ये गलत है। पैकेज नेट 4.0 में HttpClient का उपयोग करने के बारे में है। हालांकि, आपको वीएस2012 या उच्चतर का उपयोग करने की आवश्यकता हो सकती है।सुनिश्चित नहीं है कि यह वीएस -2010 में काम करता है, लेकिन यह परीक्षण के लायक हो सकता है।

+1

आपके द्वारा प्रदान किए गए लिंक का उपयोग करके, मैं अंततः निर्माण करने के लिए अपनी परियोजना प्राप्त करने में सक्षम था! बहुत बहुत धन्यवाद <3 – Smoore

+0

@Smoore। खुशी हुई यह मदद की। – stevethethread

संबंधित मुद्दे