winform 怎么使用post 或get 向网页传递数据?

qinggeer 2009-03-25 01:46:18
1 winform 里怎么用post 或 get 向网页传递数据?

private bool PostWebRequest()

{

CookieContainer cc = new CookieContainer();

string pos tData = "user=" + strUser + "&pass=" + strPsd;

byte[] byteArray = Encoding.UTF8.GetBytes(postData); // 转化



HttpWebRequest webRequest2 = (HttpWebRequest)WebRequest.Create(new Uri("http://www.xxxx.com/chk.asp"));

webRequest2.CookieContainer = cc;

webRequest2.Method = "POST";

webRequest2.ContentType = "application/x-www-form-urlencoded";

webRequest2.ContentLength = byteArray.Length;

Stream newStream = webRequest2.GetRequestStream();

// Send the data.

newStream.Write(byteArray, 0, byteArray.Length); //写入参数

newStream.Close();



HttpWebResponse response2 = (HttpWebResponse)webRequest2.GetResponse();

StreamReader sr2=new StreamReader(response2.GetResponseStream(), Encoding.Default); //每次到这里就报错: 未处理的WebException 操作超时

string text2 = sr2.ReadToEnd();

......

}
这是怎么回事?

2 winform里怎么获取访问一个网页时返回的http请求状态?(比如:http 500 或404等)
...全文
663 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qinggeer 2009-04-01
  • 打赏
  • 举报
回复
用post 怎么做?我用get 做的,总乱码。帮顶者有分。呵呵,大家帮帮我。
h2325124 2009-03-29
  • 打赏
  • 举报
回复
在winform中建一个浏览器控件,后台安ASP.net中的写.运行时就能和用浏览器一样使用.
qinggeer 2009-03-29
  • 打赏
  • 举报
回复
自己顶,明天结贴。
qinggeer 2009-03-26
  • 打赏
  • 举报
回复
嗯 ,设置过了。用progress.start(....);
就可以的。服务器开着呢。在IE里也访问正常啊,就是在winform就报错。
tianyu_lianxin 2009-03-26
  • 打赏
  • 举报
回复
chk.asp?
要运行.asp网页得设置下,要不就的上传到开启服务的服务器上才行的访问的。
qinggeer 2009-03-25
  • 打赏
  • 举报
回复
我想在winform里调用一个网页,并向它传值,仅此而已。没想要获取这个页面,操作这页面
也就是请求这个页面并传值给它就行了,不用返回这个网页的输出。
liang4571231 2009-03-25
  • 打赏
  • 举报
回复
public class FtpMessage
{
private string m_fileName;
private string m_host;
private string aspValue;

public FtpMessage(string fileName,string hostUrl)
{
//指定的一个信息,将用于填写TextBoxFileName。
m_fileName = fileName;
//指定的URL
m_host = hostUrl;
}


public bool SendCompleteMessage(string user,string password)
{
bool isSendMessageSuccess = false;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://"+m_host);
//得到网页。
WebResponse response = null;
response = request.GetResponse();
Stream readStream = response.GetResponseStream();
StreamReader sr = new StreamReader(readStream,Encoding.GetEncoding("utf-8"));
string content = "";
int index = -1;
//寻找数据
while (index < 0 && content != null)
{
content = sr.ReadLine();
//得到标准的ASPX页面的头一共26个字节,以("name=\"__VIEWSTATE\" value=\""开始的
index = content.IndexOf("name=\"__VIEWSTATE\" value=\"",0);
}
index += 26;
int endIndex = content.LastIndexOf("\"");
//形成目标数据。
if (index > 26 && endIndex > index)
{
//得到页面数据段
aspValue = content.Substring(index,endIndex-index);
StringBuilder tempData = new StringBuilder();
tempData.Append("__VIEWSTATE=");
tempData.Append(HttpUtility.UrlEncode(aspValue));
//填写TextBoxFileName的值,其值见后
tempData.Append("&TextBoxFileName=");
tempData.Append("(content1)");
//填写TextBoxUser的值,其值见后
tempData.Append("&TextBoxUser=");
tempData.Append("(content2)");
//填写TextBoxPassword的值,其值见后
tempData.Append("&TextBoxPassword=");
tempData.Append("(content3)");
//填写Button Click 的Message
tempData.Append("&ButtonForData=");
tempData.Append(HttpUtility.UrlEncode("Message"));
aspValue = tempData.ToString();
}

string content1 = m_fileName;
string content2 = user;
string content3 = password;
WebResponse response1 = null;
//替换预传送的数据。
string tempData1 = aspValue.Replace("(content1)",HttpUtility.UrlEncode(content1));
string tempData2 = tempData1.Replace("(content2)",HttpUtility.UrlEncode(content2));
string tempData3 = tempData2.Replace("(content3)",HttpUtility.UrlEncode(content3));
byte [] postData = Encoding.UTF8.GetBytes(tempData3.ToString());

HttpWebRequest request1 = (HttpWebRequest)WebRequest.Create("http://"+m_host);

//设定工作属性。
request1.Method = "POST";
request1.ContentType = "application/x-www-form-urlencoded";
request1.ContentLength = postData.Length;

//上传数据。
Stream writeStream = request1.GetRequestStream();
writeStream.Write(postData,0,postData.Length);
writeStream.Close();

//下载回应消息。
string serverMessage = "";
try
{
response1 = request1.GetResponse();
//这里的response1是Server在Button点击后跳转到的另一个页面,这个页面有一个值表示是否成功
//我将取得其值作为函数的返回值
Stream readStream1 = response1.GetResponseStream();
int i = 1024;
byte[] hehe = new byte[i];
readStream1.Read(hehe,0,i);
readStream1.Close();


StringBuilder hehe1 = new StringBuilder();
//由于我知道页面的结构,我可以从页面得到这个值。
for(int j=658;j<662;j++)
{
hehe1.Append((char)hehe[j]);
}
serverMessage = hehe1.ToString();

}
catch(Exception E)
{
string tempError = E.Message;
}
if(serverMessage == "true")
{
isSendMessageSuccess = true;
}
return isSendMessageSuccess;
}
}

网页部分的代码没有写,就是一个aspx的页面,先拖三个textbox上去,再拖一个button上去(都是web的,不是html的),
三个textbox依次命名为:TextBoxFileName,TextBoxUser,TextBoxPassword,
button命名为:ButtonForData,处理方法就写在这个buttonclick方法里,可以直接取this.TextBoxFileName等控件的值即可以在buttonclick里写
"string ss = this.TextBoxFileName.Text;"
zzxap 2009-03-25
  • 打赏
  • 举报
回复
這樣也行啊?
qinggeer 2009-03-25
  • 打赏
  • 举报
回复
不行啊,我试过了,单独访问这个chk.asp是可以的,我用的就是本机的IIS里的一个网页
运行这代码时就报错了。不知为什么?
cpio 2009-03-25
  • 打赏
  • 举报
回复
把http://www.xxxx.com/chk.asp改成你机IIS的一个文件看看成功不成功

如果成功的话,http://www.xxxx.com/chk.asp限制了
zxj_wei 2009-03-25
  • 打赏
  • 举报
回复
这是我以前在一个应用中的代码。 可以参考一下
 public bool GETReponseurl(string responseurl, out string getcode,out string result)
{
HttpWebRequest request;
try
{
request = (HttpWebRequest)WebRequest.Create(responseurl);
//声明一个HttpWebRequest请求
request.Timeout = 60000;
//设置连接超时时间
request.Headers.Set("Pragma", "no-cache");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream streamReceive = response.GetResponseStream();
Encoding encoding = Encoding.GetEncoding("UTF-8");
StreamReader streamReader = new StreamReader(streamReceive, encoding);
string strResult = streamReader.ReadToEnd();
streamReader.Close();
streamReceive.Close();

getcode = strResult;
result = "通知处理成功:返回getcode=" + getcode.Replace(" ","");
return true;

}
catch (Exception ex)
{

result = "通知处理失败:" + ex.ToString().Substring(0, 50);
getcode = "Null";
return false;
}
finally
{

}



}

110,546

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧