Cookies azonositás Webservice elérésnél?

Cookies azonositás Webservice elérésnél?
2014-06-20T09:38:44+02:00
2014-06-23T15:58:21+02:00
2022-12-01T06:45:40+01:00
ithelper
Cookies azonositás van egy Webservice -nál így nem tudom a WSDL -t elérni .

Access Forbidden! hibát dob .
Hogy tudok beállítani az url-nek értékeket ,hogy elérjem .
Mutasd a teljes hozzászólást!
Oké, szóval teljesen kézzel kell létrehozni a cookie-t.

Konkrétan ilyet még nem nagyon láttam, de íme egy lehetséges megoldás. Ha már C#, szedd le a WSDL-t kódból:

HttpWebRequest request = HttpWebRequest.Create("wsdlurl") as HttpWebRequest; request.CookieContainer = new CookieContainer(); // itt adjuk hozzá az auth cookie-t Cookie cookie = new Cookie("api key", "api value", null, "domain.hu"); request.CookieContainer.Add(cookie); using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string wsdlContent = reader.ReadToEnd(); File.WriteAllText(@"C:\WSDL\data.wsdl", wsdlContent); } }
A lementett WSDL-ből tudsz generálni proxy-t:

wsdl.exe /out:MyProxyService.cs data.wsdl
Ez nem WCF-et használ, így generálódik CookieContainer property, amit az előző példához hasonlóan tudsz használni a cookie azonosításra:

using (Webservice_MyProxyService myService = new Webservice_MyProxyService()) { myService.CookieContainer = new CookieContainer(); Cookie cookie = new Cookie("api key", "api value", null, "domain.hu"); myService.CookieContainer.Add(cookie); myService.Webservice_addKeszletInfoRequest(...) }
Fapados, de megy.
Mutasd a teljes hozzászólást!

  • Kicsit általános a kérdésed, így a válasz is az lesz: próbálj CookieContainer-t használni!

    Itt egy példa.
    Mutasd a teljes hozzászólást!
  • Jogos észrevétel ,bocsi érte!

    Van egy Webservice os url em és ebből szeretnék .Net hez osztály generálni vagy hozzáadni referenciaként ,de cookies azonositáshoz valami paramétereket be kell állítanom neki amit megadtak .
    Mutasd a teljes hozzászólást!
  • Igen, nos, először is: úgy tűnik, nem mindegy, hogy web reference-t adsz hozzá vagy WCF-fel próbálsz csatlakozni. Újabb VS-k alapértelmezetten WCF-et használnak, amikor az Add Service Reference...-t kiválasztod.

    Web Reference esetén generálódik CookieContainer property, WCF esetén viszont nem, ezt a config-ban tudod beállítani (allowCookies). Példa:

    <bindings> <basicHttpBinding allowCookies="true"> </bindings>
    Nézd meg ezt a cikket!

    Ha ezt használod, a WCF azonosítás után automatikusan kezeli a cookie-kat.

    Azonosítani tudod magad, nem?
    Mutasd a teljes hozzászólást!
  • Oké, szóval teljesen kézzel kell létrehozni a cookie-t.

    Konkrétan ilyet még nem nagyon láttam, de íme egy lehetséges megoldás. Ha már C#, szedd le a WSDL-t kódból:

    HttpWebRequest request = HttpWebRequest.Create("wsdlurl") as HttpWebRequest; request.CookieContainer = new CookieContainer(); // itt adjuk hozzá az auth cookie-t Cookie cookie = new Cookie("api key", "api value", null, "domain.hu"); request.CookieContainer.Add(cookie); using (HttpWebResponse response = request.GetResponse() as HttpWebResponse) { using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string wsdlContent = reader.ReadToEnd(); File.WriteAllText(@"C:\WSDL\data.wsdl", wsdlContent); } }
    A lementett WSDL-ből tudsz generálni proxy-t:

    wsdl.exe /out:MyProxyService.cs data.wsdl
    Ez nem WCF-et használ, így generálódik CookieContainer property, amit az előző példához hasonlóan tudsz használni a cookie azonosításra:

    using (Webservice_MyProxyService myService = new Webservice_MyProxyService()) { myService.CookieContainer = new CookieContainer(); Cookie cookie = new Cookie("api key", "api value", null, "domain.hu"); myService.CookieContainer.Add(cookie); myService.Webservice_addKeszletInfoRequest(...) }
    Fapados, de megy.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd