前兩天,一個(gè)朋友讓我?guī)退麑?xiě)這樣一個(gè)程序:在asp.net里面訪(fǎng)問(wèn)asp的頁(yè)面,把數(shù)據(jù)提交對(duì)方的數(shù)據(jù)庫(kù)后,根據(jù)返回的值(返回值為:OK或ERROR),如果為OK再把填入本地?cái)?shù)據(jù)庫(kù)。當(dāng)時(shí),想當(dāng)然,覺(jué)得很簡(jiǎn)單,用js的xmlhttp ,如果根據(jù)response 的值是“OK”就執(zhí)行提交本地?cái)?shù)據(jù)庫(kù)。很快寫(xiě)完發(fā)過(guò)去,讓朋友試試,一試發(fā)現(xiàn)不行,后來(lái)一問(wèn),原來(lái)是跨域訪(fǎng)問(wèn),我給忽略了,于是讓朋友把a(bǔ)sp改成web service,可朋友說(shuō)程序是合作公司做的,只會(huì)asp,不會(huì)用web service ,狂暈ing。沒(méi)辦法,只能請(qǐng)出asp.net的 WebResponse了,很多網(wǎng)站采集程序都是用這個(gè)。第一版寫(xiě)完了,倒是可以跨域訪(fǎng)問(wèn)了,不過(guò)是亂碼,調(diào)整有關(guān)編碼的方式,終于可以了。這個(gè)應(yīng)用雖小可是涉及的知識(shí)點(diǎn)不少:
1、xmlhttp 不能跨域提交。
當(dāng)然XMLHttpRequest還是權(quán)宜的解決的方法,
2、webresponse可以進(jìn)行跨域訪(fǎng)問(wèn),不過(guò)要注意
1)、get和post的區(qū)別。
2)、注意Timeout的問(wèn)題。
這些都是簡(jiǎn)單的程序,記下來(lái)備忘,高手就不必看了。
不廢話(huà)了,下面是相關(guān)的c#代碼:
代碼如下:
/// <summary>
/// 使用Post方法發(fā)送數(shù)據(jù)
/// </summary>
/// <param name=”pi_strPostURl”>提交地址</param>
/// <param name=”pi_strParm”>參數(shù)</param>
/// <returns></returns>
public static string PostResponse(string pi_strPostURl, string pi_strParm)
{
try
{
//編碼
Encoding t_Encoding = Encoding.GetEncoding(“GB2312“);
Uri t_Uri = new Uri(pi_strPostURl);
byte[] paramBytes = t_Encoding.GetBytes(pi_strParm);
WebRequest t_WebRequest = WebRequest.Create(t_Uri);
t_WebRequest.Timeout = 100000;
//設(shè)置ContentType
t_WebRequest.ContentType = “application/x-www-form-urlencoded“;
新聞熱點(diǎn)
疑難解答
圖片精選