2015-07-01 4 views
9

मैं लेने वाली एक REST API पर काम कर रहा हूँ और मैं बुनियादी प्रमाणीकरण जहां पासवर्ड Base64 को एन्कोड किया गया है के रूप में उपयोग कर रहा हूँअनुरोध के बाद एक आरईएसटी एपीआई द्वारा भेजे गए प्रतिक्रिया टोकन को कैप्चर कैसे करें?

private XmlDocument sendXMLRequest(string requestXml) 
    { 
     string destinationUrl = "https://serviceapi.testgroup.com/testtp/query"; 

     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(destinationUrl); 
     request.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes("API_TEST_NR:Testnol1$")); 
     byte[] bytes; 
     bytes = System.Text.Encoding.ASCII.GetBytes(requestXml); 
     request.Method = "POST"; 

     request.ContentLength = bytes.Length; 
     //request.Connection = "keep-alive"; 
     request.ContentType = "text/xml"; 
     request.KeepAlive = true; 
     request.Timeout = 2000; 
     request.MediaType = "text/xml"; 
     Stream requestStream = request.GetRequestStream(); 
     requestStream.Write(bytes, 0, bytes.Length); 
     requestStream.Close(); 
     HttpWebResponse response; 
     Stream responseStream; 

     using (response = (HttpWebResponse)request.GetResponse()) 
     { 
      if (response.StatusCode == HttpStatusCode.OK) 
      { 
       responseStream = response.GetResponseStream(); 
       XmlReader reader = new XmlTextReader(responseStream); 

       XmlDocument xmlDoc = new XmlDocument(); 
       xmlDoc.Load(reader); 


       try { reader.Close(); } 
       catch { } 
       try { responseStream.Close(); } 
       catch { } 
       try { response.Close(); } 
       catch { } 
       return xmlDoc; 
      } 
     } 
     try { response.Close(); } 
     catch { } 
     return null; 
    } 

मैं वेब एपीआई पर काम करने के लिए नए की तरह कर रहा हूँ और मुझे पता है कि एपीआई के साथ प्रतिक्रिया इस प्रकार है एपीआई दस्तावेज के आधार पर सफल प्रमाणीकरण के बाद एक एक्सेस एक्स-टोकन और मुझे यकीन नहीं है कि HTTP हेडर से इसे कैसे एक्सेस या कैप्चर किया जाए।

क्या मुझे यह पता चल सकता है कि मैं इसे प्राप्त कर सकता हूं?

उत्तर

4

यह सोचना आसान है कि मैंने बस इसके नाम से कब्जा कर लिया है।

string xtoken= response.Headers["custom-header"]; 
Console.WriteLine(xtoken); 
4

नीचे के रूप में यह प्रयास करें, का प्रतिनिधित्व करता है, WebRequest Class.In ज्यादातर मामलों का उपयोग करते हुए अनुरोध डाटा, WebRequest वर्ग डेटा प्राप्त करने के लिए पर्याप्त है। हालांकि, यदि आपको प्रोटोकॉल-विशिष्ट गुण सेट करने की आवश्यकता है, तो आपको WebRequest को प्रोटोकॉल-विशिष्ट प्रकार में डालना होगा। उदाहरण के लिए, HttpWebRequest की HTTP-विशिष्ट गुणों तक पहुंचने के लिए, WebRequest को HttpWebRequest संदर्भ में डालें।

private XmlDocument GetRootLevelServiceDocument(
string serviceEndPoint, string oAuthToken) 
{ 
XmlDocument xmlDoc = new XmlDocument(); 
HttpWebRequest request = CreateHttpRequest(serviceEndPoint, 
    oAuthToken); 

using (HttpWebResponse response = 
    (HttpWebResponse)request.GetResponse()) 
{ 
    using (XmlReader reader = 
     XmlReader.Create(response.GetResponseStream(), 
     new XmlReaderSettings() { CloseInput = true })) 
    { 
     xmlDoc.Load(reader); 

     string data = ReadResponse(response); 
     if (response.StatusCode != HttpStatusCode.OK) 
     { 
      LogMsg(string.Format("Error: {0}", data)); 
      LogMsg(string.Format(
       "Unexpected status code returned: {0}", 
       response.StatusCode)); 
     } 
    } 
} 

return xmlDoc; 
} 
+0

मुझे मेरा जवाब पहले से ही मिला है। धन्यवाद!! – DoIt

+0

ओपी को "इसे आजमाएं" क्यों चाहिए? एक अच्छे उत्तर में हमेशा क्या किया गया था इसका स्पष्टीकरण होगा और यह ओपी के लिए क्यों नहीं बल्कि भविष्य के आगंतुकों के लिए ऐसा किया गया था। –

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