在后面的code .NET公告窗体窗体、在后面、公告、NET

2023-09-04 00:21:26 作者:努力拼凑我的梦

我想使code后窗体后面。我有简单的HTML后是工作,但是当我试图使它的WebRequest我不能让它正常工作。

感谢您的时间提前。

这是工作>

 <!DOCTYPE HTML PUBLIC -  // W3C // DTD XHTML 1.0过渡// ENhttp://www.w3.org/TR/xhtml1/DTD/ XHTML1-transitional.dtd>
< HTML的xmlns =htt​​p://www.w3.org/1999/xhtml>
< HEAD>
    <冠军>无标题页< /标题>
< /头>
<身体GT;
<形式的行动=htt​​p://www.pay-pos.com/test.php方法=邮报>
< textarea的名字=datafromuser>
<CC5Request><Name>Mert</Name><Password>123</Password><ClientId>1058</ClientId><IPAddress>213.456.654.456</IPAddress><Adress>asdsa</Adress><OrderId>123</OrderId><Type>Auth</Type>
<Number>4522115422659661</Number><ExpiresAy>01</ExpiresAy><ExpiresYil>13</ExpiresYil><Cvv2Val>123</Cvv2Val><Total>10</Total><Taksit></Taksit><Kdv>18</Kdv><BankaID>1</BankaID>
&LT; TcKimlik&GT; 12345678912&LT; / TcKimlik&GT;&LT; / CC5Request&GT;
&LT; / textarea的&GT;
&LT;输入类型=提交值=AAA/&GT;
&LT; /形式GT;
&LT; /身体GT;
&LT; / HTML&GT;
 

这是行不通>

 字符串阿里= "<CC5Request><Name>Mert</Name><Password>123</Password><ClientId>xxxx</ClientId><IPAddress>213</IPAddress><Adress>asdsa</Adress>" +
                        "<OrderId>123</OrderId><Type>Auth</Type><Number>1234567891234567</Number><ExpiresAy>01</ExpiresAy><ExpiresYil>13</ExpiresYil><Cvv2Val>123</Cvv2Val>" +
                        "<Total>10</Total><Taksit></Taksit><Kdv>xx</Kdv><BankaID>1</BankaID><TcKimlik>12345678912</TcKimlik></CC5Request>";
                    WebRequest的REQ = WebRequest.Create(http://www.pay-pos.com/test.php?datafromuser=+阿里);
                    req.Credentials = CredentialCache.DefaultCredentials;
                    req.Method =POST;
                    HttpWebResponse loWebResponse =(HttpWebResponse)req.GetResponse();
                    编码ENC = Encoding.GetEncoding(1254);

                    StreamReader的loResponseStream =

                       新的StreamReader(loWebResponse.GetResponseStream(),ENC);

                    字符串lcHtml = loResponseStream.ReadToEnd();
                    loWebResponse.Close();
                    loResponseStream.Close();
 
vb.net用代码写窗体,而不是用鼠标拖窗体,怎么写

编辑:实验1

 字符串POSTDATA =NAME =梅特+
              &放大器;密码= 123+
              与&amp;客户端Id = 1058+
              与&amp;的IPAddress = 213.456.654.​​456+
              与&amp;联系地址= asdsa+
              &放大器;订单ID = 123+
              &放大器;类型=验证+
              与&amp;总数= 4522115422659661+
              与&amp; ExpiresAy = 01+
              与&amp; ExpiresYil = 13+
              &放大器; Cvv2Val = 123+
              &放大器;总= 10+
              与&amp; Taksit = 1+
              &放大器;的Kdv = 18+
              与&amp; BankaID = 1+
              与&amp; TcKimlik = 12345678912;

            字符串URI =htt​​p://www.pay-pos.com/test.php;

            Web客户端WC =新的Web客户端();
            wc.Headers [内容型] =应用/的X WWW的形式urlen codeD;
            字符串HtmlResult = wc.UploadString(URI,POSTDATA);
 

实验2

  HttpWebRequest的要求=(HttpWebRequest的)HttpWebRequest.Create(http://www.pay-pos.com/test.php);
        request.Method = WebRequestMethods.Http.Post;
        request.ContentLength = postData.Length;
        request.ContentType =应用/的X WWW的形式urlen codeD;
        request.KeepAlive = FALSE; //也试过也是如此

        StreamWriter的作家=新的StreamWriter(request.GetRequestStream());
        writer.Write(POSTDATA);
        writer.Close();
        HttpWebResponse响应=(HttpWebResponse)request.GetResponse();
        StreamReader的读者=新的StreamReader(response.GetResponseStream());
        串responseString = reader.ReadToEnd();

        response.Close();
 

实验3 !!!工作!

 字符串阿里= "datafromuser=<CC5Request><Name>Mert</Name><Password>123</Password><ClientId>1058</ClientId><IPAddress>213.456.654.456</IPAddress><Adress>asdsa</Adress><OrderId>123</OrderId><Type>Auth</Type>" +
"<Number>4522115422659661</Number><ExpiresAy>01</ExpiresAy><ExpiresYil>13</ExpiresYil><Cvv2Val>123</Cvv2Val><Total>10</Total><Taksit></Taksit><Kdv>18</Kdv><BankaID>1</BankaID>"+
&其中; TcKimlik&GT; 12345678912&所述; / TcKimlik&GT;&所述; / CC5Request&gt;中;

            字节[]的字节数组= System.Text.Encoding.UTF8.GetBytes(ALI);

            WebRequest的REQ = WebRequest.Create(http://www.pay-pos.com/test.php);

            req.Co​​ntentType =应用/的X WWW的形式urlen codeD;
            req.Co​​ntentLength = byteArray.Length;
            req.Method =POST;

            流式传输的数据流= req.GetRequestStream();
            dataStream.Write(字节数组,0,byteArray.Length);
            dataStream.Close();

            HttpWebResponse响应=(HttpWebResponse)req.GetResponse();
            StreamReader的读者=新的StreamReader(response.GetResponseStream());
            串responseString = reader.ReadToEnd();

            response.Close();
 

解决方案

我看错的第一件事情是,你试图用一个查询字符串来发布表单数据。你的表单数据应该像这样:

 字符串阿里= "datafromuser=<CC5Request><Name>Mert</Name><Password>123</Password><ClientId>xxxx</ClientId><IPAddress>213</IPAddress><Adress>asdsa</Adress>" +
                            "<OrderId>123</OrderId><Type>Auth</Type><Number>1234567891234567</Number><ExpiresAy>01</ExpiresAy><ExpiresYil>13</ExpiresYil><Cvv2Val>123</Cvv2Val>" +
                            "<Total>10</Total><Taksit></Taksit><Kdv>xx</Kdv><BankaID>1</BankaID><TcKimlik>12345678912</TcKimlik></CC5Request>";
 

接下来,你需要从你的表单数据得到字节[]。

 字节[]的字节数组= Encoding.UTF8.GetBytes(ALI);
 

设置一些头:

  req.Co​​ntentType =应用/的X WWW的形式urlen codeD;
req.Co​​ntentLength = byteArray.Length;
req.Method =POST;
 

现在写你的数据请求流。

 流数据流= req.GetRequestStream();
dataStream.Write(字节数组,0,byteArray.Length);
dataStream.Close();
 

终于...让你的回应。另外请注意,任何实现IDisposable应该被包裹在一个使用语句,即 WebResponse类

另外请注意,提交按钮是不是你的表单提交数据的一部分。这是可能的服务器要求的。

编辑:下面是来自微软,引导你一步一步一个完整的例子

http://msdn.microsoft.com/en-us/library/debx8sh9.aspx

I wanna make a post form in code behind. I have simple html post is working but when I try make it WebRequest I can't make it work.

Thanks for you time in advance.

this is working >

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>
</head>
<body>
<form action="http://www.pay-pos.com/test.php" method="post">
<textarea name="datafromuser">
<CC5Request><Name>Mert</Name><Password>123</Password><ClientId>1058</ClientId><IPAddress>213.456.654.456</IPAddress><Adress>asdsa</Adress><OrderId>123</OrderId><Type>Auth</Type>
<Number>4522115422659661</Number><ExpiresAy>01</ExpiresAy><ExpiresYil>13</ExpiresYil><Cvv2Val>123</Cvv2Val><Total>10</Total><Taksit></Taksit><Kdv>18</Kdv><BankaID>1</BankaID>
<TcKimlik>12345678912</TcKimlik></CC5Request>
</textarea>
<input type="submit" value="aaa" />
</form>
</body>
</html>

This isn't working >

String ali = "<CC5Request><Name>Mert</Name><Password>123</Password><ClientId>xxxx</ClientId><IPAddress>213</IPAddress><Adress>asdsa</Adress>" +
                        "<OrderId>123</OrderId><Type>Auth</Type><Number>1234567891234567</Number><ExpiresAy>01</ExpiresAy><ExpiresYil>13</ExpiresYil><Cvv2Val>123</Cvv2Val>" +
                        "<Total>10</Total><Taksit></Taksit><Kdv>xx</Kdv><BankaID>1</BankaID><TcKimlik>12345678912</TcKimlik></CC5Request>";
                    WebRequest req = WebRequest.Create("http://www.pay-pos.com/test.php?datafromuser=" + ali);
                    req.Credentials = CredentialCache.DefaultCredentials;
                    req.Method = "POST";
                    HttpWebResponse loWebResponse = (HttpWebResponse)req.GetResponse();
                    Encoding enc = Encoding.GetEncoding(1254); 

                    StreamReader loResponseStream =

                       new StreamReader(loWebResponse.GetResponseStream(), enc);

                    string lcHtml = loResponseStream.ReadToEnd();
                    loWebResponse.Close();
                    loResponseStream.Close();

EDIT: EXPERIMENT 1

String postData = "Name=Mert" +
              "&Password=123" +
              "&ClientId=1058" +
              "&IPAddress=213.456.654.456" +
              "&Adress=asdsa" +
              "&OrderId=123" +
              "&Type=Auth" +
              "&Number=4522115422659661" +
              "&ExpiresAy=01" +
              "&ExpiresYil=13" +
              "&Cvv2Val=123" +
              "&Total=10" +
              "&Taksit=1" +
              "&Kdv=18" +
              "&BankaID=1" +
              "&TcKimlik=12345678912";

            string URI = "http://www.pay-pos.com/test.php";

            WebClient wc = new WebClient();
            wc.Headers["Content-type"] = "application/x-www-form-urlencoded";
            string HtmlResult = wc.UploadString(URI, postData);

EXPERIMENT 2

 HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.pay-pos.com/test.php");
        request.Method = WebRequestMethods.Http.Post;
        request.ContentLength = postData.Length;
        request.ContentType = "application/x-www-form-urlencoded";
        request.KeepAlive = false; //also tried true as well

        StreamWriter writer = new StreamWriter(request.GetRequestStream());
        writer.Write(postData);
        writer.Close();
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        StreamReader reader = new StreamReader(response.GetResponseStream());
        String responseString = reader.ReadToEnd();

        response.Close();

EXPERIMENT 3 !!!WORKING!!!

String ali = "datafromuser=<CC5Request><Name>Mert</Name><Password>123</Password><ClientId>1058</ClientId><IPAddress>213.456.654.456</IPAddress><Adress>asdsa</Adress><OrderId>123</OrderId><Type>Auth</Type>" +
"<Number>4522115422659661</Number><ExpiresAy>01</ExpiresAy><ExpiresYil>13</ExpiresYil><Cvv2Val>123</Cvv2Val><Total>10</Total><Taksit></Taksit><Kdv>18</Kdv><BankaID>1</BankaID>"+
"<TcKimlik>12345678912</TcKimlik></CC5Request>";

            byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(ali);

            WebRequest req = WebRequest.Create("http://www.pay-pos.com/test.php");

            req.ContentType = "application/x-www-form-urlencoded"; 
            req.ContentLength = byteArray.Length;
            req.Method = "POST"; 

            Stream dataStream = req.GetRequestStream(); 
            dataStream.Write(byteArray, 0, byteArray.Length); 
            dataStream.Close();

            HttpWebResponse response = (HttpWebResponse)req.GetResponse();
            StreamReader reader = new StreamReader(response.GetResponseStream());
            String responseString = reader.ReadToEnd();

            response.Close();

解决方案

The first thing I see wrong is that you're trying to use a query string to post the form data. Your "form data" should be like so:

 String ali = "datafromuser=<CC5Request><Name>Mert</Name><Password>123</Password><ClientId>xxxx</ClientId><IPAddress>213</IPAddress><Adress>asdsa</Adress>" +
                            "<OrderId>123</OrderId><Type>Auth</Type><Number>1234567891234567</Number><ExpiresAy>01</ExpiresAy><ExpiresYil>13</ExpiresYil><Cvv2Val>123</Cvv2Val>" +
                            "<Total>10</Total><Taksit></Taksit><Kdv>xx</Kdv><BankaID>1</BankaID><TcKimlik>12345678912</TcKimlik></CC5Request>";

Next, you need to get the bytes[] from your form data.

byte[] byteArray = Encoding.UTF8.GetBytes(ali);

Set some headers:

req.ContentType = "application/x-www-form-urlencoded"; 
req.ContentLength = byteArray.Length;
req.Method = "POST"; 

Now write your data to the request stream.

Stream dataStream = req.GetRequestStream(); 
dataStream.Write(byteArray, 0, byteArray.Length); 
dataStream.Close(); 

Finally... get your response. Also note, anything that implements IDisposable should be wrapped in a using statement, i.e. Stream and WebResponse.

Also note that the submit button is not part of your form post data. It's possible the server is expecting it.

Edit: Here's a complete example from Microsoft that guides you step by step.

http://msdn.microsoft.com/en-us/library/debx8sh9.aspx