两个网站之间如何传值? 假如有 A 和 B 两个网站,分别在两台服务器上,我现在可以改 A 的源代码,B 我动不了,A 用Post方式向 B 发出请求,B 可以返回一个字符串,A 如何接收这个字符串?(除了用Javascript的xmlhttp.responseText之外还有什么办法?) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 url传,post,webservice传,数据库连接字符串直接传。方法很多 lz 传值就哪么几种方式,不用想了。 form,get post, webservice等 呵呵。 B 网站没有提供webservice,而且 B 的源代码我动不了的。 没有提供,返回给你一个字符串已经很对得起你了。(Javascript的xmlhttp.responseText可以得到的,我只是想知道在后台如何做。) 好几种方式呢。用Post吧。用一个页面或者处理程序来接收它。 public static string GetHttpRequest(string uri, Hashtable paras, string method, Encoding encode) { string strResult = string.Empty; WebRequest oRequest = null; WebResponse oResponse = null; Stream oInStream = null; StreamReader oReadStream = null; string strdata = string.Empty; if (paras != null && paras.Count > 0) { foreach (DictionaryEntry para in paras) { strdata += ("&" + para.Key.ToString() + "=" + HttpUtility.UrlEncode(para.Value.ToString(), encode)); } } if (strdata != string.Empty) strdata = strdata.Trim(new char[] { '&' }); try { bool bSendData = method.ToUpper() == "POST"; if (!bSendData) uri = uri + "?" + strdata; oRequest = WebRequest.Create(uri); oRequest.ContentType = "application/x-www-form-urlencoded"; oRequest.Method = method.ToUpper(); if (bSendData) { oInStream = oRequest.GetRequestStream(); byte[] data = encode.GetBytes(strdata); oInStream.Write(data, 0, data.Length); oInStream.Flush(); oInStream.Close(); oInStream = null; } oResponse = oRequest.GetResponse(); oReadStream = new StreamReader(oResponse.GetResponseStream(), encode); strResult = oReadStream.ReadToEnd(); oReadStream.Close(); oReadStream = null; oResponse.Close(); oResponse = null; } catch (Exception ex) { strResult = ex.Message; } finally { if (oInStream != null) oInStream.Close(); if (oReadStream != null) oReadStream.Close(); if (oResponse != null) oResponse.Close(); } return strResult; } 这段代码我测试了一下,它把Request页面的html全都传过来了,而没有只传里面的form表单的数据。 如何只传回一个简短的字符串,而不是全部html,应该用什么方法接收呢?(比如像Ajax那样只接收局部,不接收全部)。 办法很多。xmlhttp。POST.... php、asp、java我都知道怎么写,就是不知道ASP.NET对应的代码是什么。 楼主可以考虑采用Windows Service写一个服务,定期更新同步两个数据库,这样两个数据库就合并成了一个用。 //引入com microsoft.xml.3.0 //using MSXML2; string Url = "http://127.0.0.1/MailTOut.aspx?SendUser=" + usernm + "&SendMem=" + usermem + "&SendPad=" + userpad + "&SendTmNum=" + sendnumber; XMLHTTP http = new XMLHTTP(); http.open("get", Url, false, null, null); http.setRequestHeader("Content-Type","text/xml;charset=utf-8"); http.send(null); if (http.readyState == 4) { Response.Write(http.responseText); } 建议用cookies用完后remove就可以了,希望对lz有用 建议看下C#XML入门经典这书。 您好!您这个方法我看可行!但这里是发送和接收在一起。可能是我不懂XMLHTTP的原理。如果只“接收”,不“发送”(已经在别处“发送”),XMLHTTP需要设置open、header、send等等吗?如果不需要再次设置,可以直接接收吗? 找出接口!! url 传值过去! Response.Write("<body><form name='chinabanksubmit' method='post' action=‘请求的页面’>"); Response.Write("<input type='hidden' name='v_amount' value=" + v_amount + ">"); Response.Write("<input type='hidden' name='v_moneytype' value=" + v_moneytype + ">"); Response.Write("<input type='hidden' name='v_oid' value=" + v_oid + ">"); Response.Write("<input type='hidden' name='v_mid' value=" + v_mid + ">"); Response.Write("<input type='hidden' name='v_url' value=" + v_url + ">"); Response.Write("<input type='hidden' name='v_md5info' value=" + v_md5info + ">"); Response.Write("</form>"); Response.Write("<script>"); Response.Write("document.chinabanksubmit.submit()"); Response.Write("</script></body>");通不定期这种方式。。 源代码都改不了,什么WebService、url传值、post等等都没用! string strLive = "https://www.paypal.com/cgi-bin/webscr"; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strLive); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; byte[] param = Request.BinaryRead(HttpContext.Current.Request.ContentLength); string strRequest = Encoding.ASCII.GetString(param); strRequest += "&cmd=_notify-validate"; req.ContentLength = strRequest.Length; StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII); streamOut.Write(strRequest); streamOut.Close(); StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream()); string strResponse = streamIn.ReadToEnd(); streamIn.Close(); if (strResponse == "VERIFIED") { string sQuerystring = ""; string[] sParts; string[] aParts; string sKey = ""; string sValue = ""; string item_number = ""; string item_name = ""; string[][] sResults; int iParts; sQuerystring = strRequest; sParts = System.Text.RegularExpressions.Regex.Split(sQuerystring, "&"); iParts = sParts.Length - 1; sResults = new string[iParts + 1][]; for (int i = 0; i < iParts; i++) { aParts = sParts[i].Split('='); sKey = aParts[0]; sValue = aParts[1]; sResults[i] = new string[] { sKey, sValue }; if (sKey == "item_number") { item_number = sValue; } if (sKey == "item_name") { item_name = sValue; } } 操作数据库 //Response.Write("<script>alert('Pays successfully !');window.top.self.location='index.aspx';</script>"); return; } else { //Response.Write("<script>alert('The payment defeat, please contact with the manager !');window.top.self.location='index.aspx';</script>"); return; } <input type="submit"> 紧急求救!!! 如何在ASP.NET中调用C#的exe程序 ContentPlaceHolder 关于全局变量的存放位置问题?????????? 如何替换指定格式的内容 一段下载文件的代码,为何中文文件名字显示乱码。 datagrid能不能设置每一行的属性?? 我更改了电脑设置,现在iis无法自动启动,请问如何设置回来? 用在线编辑器存的内容存入数据库之后,如何读取的问题??? 如何获取两个时间之间有多少小时???急急急! DataList控件中的HeaderTemplate里的label控件绑定数据
form,get post, webservice等 呵呵。
{
string strResult = string.Empty;
WebRequest oRequest = null;
WebResponse oResponse = null;
Stream oInStream = null;
StreamReader oReadStream = null;
string strdata = string.Empty;
if (paras != null && paras.Count > 0)
{
foreach (DictionaryEntry para in paras)
{
strdata += ("&" + para.Key.ToString() + "=" + HttpUtility.UrlEncode(para.Value.ToString(), encode));
}
}
if (strdata != string.Empty)
strdata = strdata.Trim(new char[] { '&' });
try
{
bool bSendData = method.ToUpper() == "POST";
if (!bSendData) uri = uri + "?" + strdata;
oRequest = WebRequest.Create(uri);
oRequest.ContentType = "application/x-www-form-urlencoded";
oRequest.Method = method.ToUpper();
if (bSendData)
{
oInStream = oRequest.GetRequestStream();
byte[] data = encode.GetBytes(strdata);
oInStream.Write(data, 0, data.Length);
oInStream.Flush();
oInStream.Close();
oInStream = null;
}
oResponse = oRequest.GetResponse();
oReadStream = new StreamReader(oResponse.GetResponseStream(), encode);
strResult = oReadStream.ReadToEnd();
oReadStream.Close();
oReadStream = null;
oResponse.Close();
oResponse = null;
}
catch (Exception ex)
{
strResult = ex.Message;
}
finally
{
if (oInStream != null) oInStream.Close();
if (oReadStream != null) oReadStream.Close();
if (oResponse != null) oResponse.Close();
}
return strResult;
}
xmlhttp。POST....
//using MSXML2;
string Url = "http://127.0.0.1/MailTOut.aspx?SendUser=" + usernm + "&SendMem=" + usermem + "&SendPad=" + userpad + "&SendTmNum=" + sendnumber;
XMLHTTP http = new XMLHTTP();
http.open("get", Url, false, null, null);
http.setRequestHeader("Content-Type","text/xml;charset=utf-8");
http.send(null);
if (http.readyState == 4)
{
Response.Write(http.responseText);
}
Response.Write("<input type='hidden' name='v_amount' value=" + v_amount + ">");
Response.Write("<input type='hidden' name='v_moneytype' value=" + v_moneytype + ">");
Response.Write("<input type='hidden' name='v_oid' value=" + v_oid + ">");
Response.Write("<input type='hidden' name='v_mid' value=" + v_mid + ">");
Response.Write("<input type='hidden' name='v_url' value=" + v_url + ">");
Response.Write("<input type='hidden' name='v_md5info' value=" + v_md5info + ">");
Response.Write("</form>");
Response.Write("<script>");
Response.Write("document.chinabanksubmit.submit()");
Response.Write("</script></body>");通不定期这种方式。。
源代码都改不了,什么WebService、url传值、post等等都没用!
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strLive);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
byte[] param = Request.BinaryRead(HttpContext.Current.Request.ContentLength);
string strRequest = Encoding.ASCII.GetString(param); strRequest += "&cmd=_notify-validate";
req.ContentLength = strRequest.Length; StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
streamOut.Write(strRequest);
streamOut.Close();
StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
string strResponse = streamIn.ReadToEnd();
streamIn.Close(); if (strResponse == "VERIFIED")
{
string sQuerystring = "";
string[] sParts;
string[] aParts;
string sKey = "";
string sValue = "";
string item_number = "";
string item_name = "";
string[][] sResults;
int iParts;
sQuerystring = strRequest; sParts = System.Text.RegularExpressions.Regex.Split(sQuerystring, "&");
iParts = sParts.Length - 1;
sResults = new string[iParts + 1][];
for (int i = 0; i < iParts; i++)
{
aParts = sParts[i].Split('=');
sKey = aParts[0];
sValue = aParts[1];
sResults[i] = new string[] { sKey, sValue };
if (sKey == "item_number")
{
item_number = sValue;
}
if (sKey == "item_name")
{
item_name = sValue;
} } 操作数据库
//Response.Write("<script>alert('Pays successfully !');window.top.self.location='index.aspx';</script>"); return;
}
else
{
//Response.Write("<script>alert('The payment defeat, please contact with the manager !');window.top.self.location='index.aspx';</script>"); return;
}