Avatar billede henrik_40 Juniormester
17. august 2016 - 17:13 Der er 1 løsning

HttpWebRequest Credintial fejler

Hej Eksperter
jeg forsøger at få adgang til WorlPays modul. Spørgmålet her er det samme som jeg laver:
http://forums.asp.net/p/1501279/3553954.aspx

Her findes andre programmeringssprog som laver det jeg skal kunne lave:
http://support.worldpay.com/support/gg/index.php?page=examples&amp%3bc=WW

I den anden ende får jeg Authentication Errors
[2016-08-17 09:19:20.267 (TID:a7c92d697cc3ec4b)] {INFO/XMLAuthFilter}: Authentication Failure : { ipAddress=XX.YY.z.14, userName="null", reason="No Auth Header" }



Mine Credintials fejler og jeg har forsøgt mig med mange muligherder.Blandt andet Credential 1 + 2 + 3, som I kan se her er udkommenteret:


  public string XML2Bibitversion2(string sXML, string sURL, string sUser, string sPass)
    {
      HttpWebRequest request = null;
      HttpWebResponse response = null;
      byte[] bytes;
      // sURL:

      XDocument document = new XDocument();
      try
      {
        // bytes = Encoding.ASCII.GetBytes("" +sXML +"," +sUser+","+sPass);
        bytes = Encoding.ASCII.GetBytes(sXML);
        request = (HttpWebRequest)WebRequest.Create(sURL);
        request.PreAuthenticate = true;

        // Credential 1
        /*
        CredentialCache mycache = new CredentialCache();
        mycache.Add(new Uri(sURL), "Digest", new NetworkCredential(sUser, sPass));
        request.Credentials = mycache;
        */

        // Credential 2) Building my own Header
        /*
        string credentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(sUser + ":" + sPass));
        request.Headers.Add("Authorization", "Basic " + credentials);
        */


        // Credential 3) Building my own Header
        /*
        string credentials = String.Format("{0}:{1}", sUser, sPass);
        byte[] credbytes = Encoding.ASCII.GetBytes(credentials);
        string base64 = Convert.ToBase64String(credbytes);
        string authorization = String.Concat("Basic ", base64);
        request.Headers.Add("Authorization", authorization);
        */


        request.ContentType = "text/xml; encoding='utf-8'";
        request.ContentLength = bytes.Length;
        request.Method = "POST";
        Stream requestStream = request.GetRequestStream();
        requestStream.Write(bytes, 0, bytes.Length);
        requestStream.Close();
        Thread.Sleep(2000);
        using (response = (HttpWebResponse)request.GetResponse())
        {
          if (response.StatusCode == HttpStatusCode.OK)
          {
            Stream responseStream = response.GetResponseStream();
            string responseStr = new StreamReader(responseStream).ReadToEnd();
            return responseStr;
          }
          return null;
        }
      }
      catch (Exception ex)
      {
        return ex.ToString();
      }
    }
Avatar billede henrik_40 Juniormester
18. august 2016 - 14:56 #1
Jeg svarer mig selv. Her er løsningen, som virker for mig:
    public string XML2Bibitversion2(string sXML, string sURL, string sUser, string sPass)
    {
      HttpWebRequest request = null;
      HttpWebResponse response = null;
      byte[] bytes;
      // sURL:
      XDocument document = new XDocument();

      try
      {
        bytes = Encoding.ASCII.GetBytes(sXML);
        request = (HttpWebRequest)WebRequest.Create(sURL);

        // Credentials
        string _auth = string.Format("{0}:{1}",sUser, sPass  );
        string _enc = Convert.ToBase64String(Encoding.ASCII.GetBytes(_auth));
        string _cred = string.Format("{0} {1}", "Basic", _enc);
        request.Headers[HttpRequestHeader.Authorization] = _cred;

        request.Method = "POST";
        request.ContentType = "text/xml";
        request.ContentLength = bytes.Length;
        Stream requestStream = request.GetRequestStream();
        requestStream.Write(bytes, 0, bytes.Length);
        requestStream.Close();

        // REMEMBER TO OUTCOMMENT
        Thread.Sleep(2000);

        using (response = (HttpWebResponse)request.GetResponse())
        {
          if (response.StatusCode == HttpStatusCode.OK)
          {
            Stream responseStream = response.GetResponseStream();
            string responseStr = new StreamReader(responseStream).ReadToEnd();
            return responseStr;
          }
          return null;
        }
      }
      catch (Exception ex)
      {
        return ex.ToString();
      }
    }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester