假如有 A 和 B 两个网站,分别在两台服务器上,我现在可以改 A 的源代码,B 我动不了,A 用Post方式向 B 发出请求,B 可以返回一个字符串,A 如何接收这个字符串?(除了用Javascript的xmlhttp.responseText之外还有什么办法?) 

解决方案 »

  1.   

    url传,post,webservice传,数据库连接字符串直接传。方法很多
      

  2.   

    lz 传值就哪么几种方式,不用想了。
       form,get post, webservice等  呵呵。
      

  3.   

    B 网站没有提供webservice,而且 B 的源代码我动不了的。
      

  4.   

    没有提供,返回给你一个字符串已经很对得起你了。(Javascript的xmlhttp.responseText可以得到的,我只是想知道在后台如何做。)
      

  5.   

    好几种方式呢。用Post吧。用一个页面或者处理程序来接收它。
      

  6.   

    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;
            }
      

  7.   

    这段代码我测试了一下,它把Request页面的html全都传过来了,而没有只传里面的form表单的数据。
      

  8.   

    如何只传回一个简短的字符串,而不是全部html,应该用什么方法接收呢?(比如像Ajax那样只接收局部,不接收全部)。
      

  9.   

    办法很多。
    xmlhttp。POST....
      

  10.   

    php、asp、java我都知道怎么写,就是不知道ASP.NET对应的代码是什么。
      

  11.   

    楼主可以考虑采用Windows Service写一个服务,定期更新同步两个数据库,这样两个数据库就合并成了一个用。
      

  12.   

    //引入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);
                                }
      

  13.   

    建议用cookies用完后remove就可以了,希望对lz有用
      

  14.   

    建议看下C#XML入门经典这书。
      

  15.   

    您好!您这个方法我看可行!但这里是发送和接收在一起。可能是我不懂XMLHTTP的原理。如果只“接收”,不“发送”(已经在别处“发送”),XMLHTTP需要设置open、header、send等等吗?如果不需要再次设置,可以直接接收吗?
      

  16.   

    找出接口!!   url 传值过去!
      

  17.   

      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>");通不定期这种方式。。
      

  18.   


    源代码都改不了,什么WebService、url传值、post等等都没用!
      

  19.   

                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;
                }