可以信息写到一个方法体内,进行动态的调用,以下我把主要的代码发布出来:
#region 调用POST请求把数据传到指定URL上
Hashtable headers = new Hashtable();
headers.Add("Test", 1); //测试时test=1 正常上线用什么
headers.Add("OrderID", m_szOrderID);
headers.Add("AcctNo", m_szAcctNo);
headers.Add("OLDOrderID", m_szUserData3);
headers.Add("PGTxnID", m_szPGTxnID);
string JKReturn = "";
oLog.Log(0, "进行第一次请求,JikeUrl: " + JikeUrl); //jikeurl自定义
JKReturn = UrlPost(JikeUrl, headers);
oLog.Log(0, "进行第一次请求结束,返回值=" + JKReturn);
if (JKReturn.Contains("success"))
{
oLog.Log(0, " 数据已发送成功,返回值为=" + JKReturn);
//结束请求
}
else
{
oLog.Log(0, "进行第二次请求,JikeUrl: " + JikeUrl);
JKReturn = UrlPost(JikeUrl, headers);//jikeurl自定义
oLog.Log(0, "进行第二次请求结束,返回值=" + JKReturn);
}
#endregion
----------------------------------------------------
#region POST 请求
/// <summary>
/// POST 请求
/// </summary>
/// <param name="url">请求URL</param>
/// <param name="headers">请求参数</param>
/// <returns></returns>
public string UrlPost(string url, Hashtable headers)
{
string backstr = "";
try
{
//建立WebRequest对象,url目标地址
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
//将LoginInfo转换为byte[]格式,这里的LoginInfo应该是你要传输的数据
byte[] requestBytes = System.Text.Encoding.ASCII.GetBytes(SetHttpRequests(headers));
//设置请求为POST方式,
req.Method = "POST";
//设置请求类型
req.ContentType = "application/x-www-form-urlencoded";
//请求发送的数据长度, 这里就很清楚了,请求数据是从LoginInfo转换来的
//前面的代码byte[] requestBytes = System.Text.Encoding.ASCII.GetBytes(LoginInfo);
req.ContentLength = requestBytes.Length;
//建立请求的输入流
Stream requestStream = req.GetRequestStream();
//从requestBytes中读取数据到输入流中
requestStream.Write(requestBytes, 0, requestBytes.Length);
//关闭输入流
requestStream.Close();
//获取响应对象
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
//获取服务器返回流
StreamReader sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.Default);
//读取返回流数据,并赋值给backstr
backstr = sr.ReadToEnd();
//页面输出line???? 应该是backstr 吧
//Response.Write(line);
//关闭* 2, 不解释了
sr.Close();
res.Close();
}
catch (Exception)
{
}
return backstr;
}
#region 页面提示信息
/// <summary>
/// 页面返回结果
/// </summary>
/// <param name="value"></param>
public void Pageshowtext(string value)
{
Response.Clear();
Response.Write("" + value + "");
Response.Flush();
Response.End();
}
#endregion
/// <summary>
/// 将数据转化
/// </summary>
/// <param name="headers"></param>
/// <returns></returns>
private string SetHttpRequests(Hashtable headers)
{
string s = "";
foreach (DictionaryEntry objDE in headers)
{
try
{
string strKey = objDE.Key.ToString();
string strValue = objDE.Value.ToString();
//"p1=x&p2=y&p3=测试的中文";
s += strKey + "=" + strValue + "&";
}
catch (Exception ex)
{
// m_oLogger.Log(m_szLogLevel, "SetHttpRequests ; Exception " + ex.Message);
}
}
s = s.Substring(0, s.Length - 1);
return s;
}
#endregion
最后
以上就是跳跃睫毛最近收集整理的关于ASP.NET 调用POST请求把数据传到指定URL上,适合跨域操作的全部内容,更多相关ASP.NET内容请搜索靠谱客的其他文章。
发表评论 取消回复