2016-05-23 4 views
0

Ich versuche, das Zahlungsgateway zu implementieren. Im letzten Schritt muss ich die Daten an die spezifische URL senden und dann den Client umleiten. in asp.net ist es so einfach. Ich habe gerade ein Java-Skript geschrieben, um das zu tun. dann nenne ich es so:Post und Redirect in WCF-Dienst

ClientScript.RegisterStartupScript(typeof(Page), "ClientScript", "<script language='javascript' type='text/javascript'> postRefId('" + "13" + "');</script> ", false); 

aber jetzt möchte ich das gleiche tun in wcf service. Ich habe keine Ahnung, wie ich es tun kann. Ich fand this Artikel, aber es funktioniert nicht. ich versuche, auch dies, aber es hat nicht nether arbeiten:

var request = (HttpWebRequest)WebRequest.Create(url); 
request.Method = "POST"; 
request.ContentType = "application/x-www-form-urlencoded"; 
request.ContentLength = body.Length; 
using (var writer = new StreamWriter(request.GetRequestStream())) 
    writer.Write(body); 

HttpContext.Current.Response.Redirect(url); 

Antwort

0

schließlich ich die Antwort finden. es scheint, wir können nicht umleiten und in wcf service post. Also habe ich meinem Projekt eine Aspx-Seite hinzugefügt. i umleiten dann auf dieser Seite wie folgt aus:

 WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Redirect; 
     WebOperationContext.Current.OutgoingResponse.Location = "mypage.aspx?123456"; 

dann ich diese Klasse verwenden:

public class RemotePost 
{ 
    private string url; 
    private string method; 
    private Dictionary<string, string> inputs; 

    public string Url 
    { 
     set { url = value; } 
     get { return url; } 
    } 
    public string Method 
    { 
     set { method = value; } 
     get { return method; } 
    } 
    public Dictionary<string, string> Inputs 
    { 
     set { inputs = value; } 
     get { return inputs; } 
    } 


    public RemotePost(string url, string method = "post") 
    { 
     Url = url; 
     Method = method; 
     Inputs = new Dictionary<string, string>(); 
    } 
    public void PostAndRedirect() 
    { 
     var postString = new StringBuilder(); 
     postString.Append("<html><head>"); 
     postString.Append("</head><body onload=\"document.form1.submit();\">"); 
     postString.Append("<form name=\"form1\" method=\"" + Method + "\" action=\"" + Url + "\" >"); 

     foreach (KeyValuePair<string, string> oPar in Inputs) 
      postString.Append(string.Format("<input name=\"{0}\" type=\"hidden\" value=\"{1}\">", oPar.Key, oPar.Value)); 

     postString.Append("</form>"); 
     postString.Append("</body></html>"); 

     HttpContext.Current.Response.Clear(); 
     HttpContext.Current.Response.Write(postString.ToString()); 
     HttpContext.Current.Response.End(); 
    } 
    public void Add(string name, string value) 
    { 
     lock (Inputs) 
      Inputs.Add(name, value); 
    } 
} 

in meiner Seite Load-Ereignis, um die Umleitung und Post. so kann ich umleiten und im wcf service posten. Hoffnung könnte helfen.