How do I POST data to a remote URL in Classic ASP?

后端 未结 8 780
走了就别回头了
走了就别回头了 2020-12-08 08:06

I need to POST data to a url in the middle of a script.

  1. User fills out form:
  2. Form submits to process.asp: I need to PO
相关标签:
8条回答
  • 2020-12-08 08:23

    In .Net it's System.Net.WebClient or System.Net.HttpWebRequest.

    Classic ASP has a completely different api- I'm not sure what you would use instead there.

    [edit]
    I suspect that if classic asp has any built in support for this, it's in a Scripting object, like so: CreateObject("Scripting.????")

    0 讨论(0)
  • 2020-12-08 08:25

    I'm not sure why everybody else is posting ASP.Net solutions when you specifically said you're using ASP "classic."

    Something like this should work. I didn't write the code; I found it elsewhere. But the MSXML2.ServerXMLHTTP object is what you want to use if you don't want to purchase something commercial.

    function getHTML (strUrl)
        Set xmlHttp = Server.Createobject("MSXML2.ServerXMLHTTP")
        xmlHttp.Open "GET", strUrl, False
        xmlHttp.setRequestHeader "User-Agent", "asp httprequest"
        xmlHttp.setRequestHeader "content-type", "application/x-www-form-urlencoded"
        xmlHttp.Send
        getHTML = xmlHttp.responseText
        xmlHttp.abort()
        set xmlHttp = Nothing   
    end function 
    

    You might need to add some error-handling code to that for use in a production environment. I believe that object throws errors if it gets a 404 or timeout error. You'll need to "trap" them ASP-style (yuck) by setting On Error Resume Next before the .Send and then examine the ASP error object to see if there was a problem.

    Good luck!

    0 讨论(0)
  • 2020-12-08 08:28

    Use the class described here. This is a pretty good method and I use it all the time:

    http://www.jigar.net/articles/viewhtmlcontent78.aspx

    public class  RemotePost{
         private  System.Collections.Specialized.NameValueCollection Inputs 
         = new  System.Collections.Specialized.NameValueCollection() ;
    
        public string  Url  =  "" ;
        public string  Method  =  "post" ;
        public string  FormName  =  "form1" ;
    
        public void  Add( string  name, string value ){
            Inputs.Add(name, value ) ;
         }
    
         public void  Post(){
            System.Web.HttpContext.Current.Response.Clear() ;
    
             System.Web.HttpContext.Current.Response.Write( "<html><head>" ) ;
    
             System.Web.HttpContext.Current.Response.Write( string .Format( "</head><body onload=\"document.{0}.submit()\">" ,FormName)) ;
    
             System.Web.HttpContext.Current.Response.Write( string .Format( "<form name=\"{0}\" method=\"{1}\" action=\"{2}\" >" ,
    
            FormName,Method,Url)) ;
                for ( int  i = 0 ; i< Inputs.Keys.Count ; i++){
                System.Web.HttpContext.Current.Response.Write( string .Format( "<input name=\"{0}\" type=\"hidden\" value=\"{1}\">" ,Inputs.Keys[i],Inputs[Inputs.Keys[i]])) ;
             }
            System.Web.HttpContext.Current.Response.Write( "</form>" ) ;
             System.Web.HttpContext.Current.Response.Write( "</body></html>" ) ;
             System.Web.HttpContext.Current.Response.End() ;
         }
    } 
    

    Use it like:

    RemotePost myremotepost  =  new  RemotePost() ;
    myremotepost.Url  =  "http://www.jigar.net/demo/HttpRequestDemoServer.aspx" ;
    myremotepost.Add( "field1" , "Huckleberry" ) ;
    myremotepost.Add( "field2" , "Finn" ) ;
    myremotepost.Post() ; 
    
    0 讨论(0)
  • 2020-12-08 08:37

    If you're stuck with class ASP, you can do it with the commercial ASPHTTP library here:

    http://www.serverobjects.com/comp/asphttp3.htm

    0 讨论(0)
  • 2020-12-08 08:37

    You can do it by many way. With WebClient

     WebClient Client = new WebClient ();
     Client.DownloadFile("http://www.stackoverflow.com/myfile.html", "myfile.html");
    

    Or you can put the data in a stream to use it in your program:

    WebClient Client = new WebClient ();
    Stream strm = Client.OpenRead ("http://www.stackoverflow.com/myfile.htm");
    

    But I do prefer use HttpWebRequest:

    HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create("http://www.stackoverflow.com/myfile.html");
    StreamWriter myWriter = new StreamWriter(objRequest.GetRequestStream());
    

    I prefer the second one because you can have more option for POST/GET or for Cookie.

    0 讨论(0)
  • 2020-12-08 08:37

    In ASP.NET, it's pretty simple:

    HttpWebRequest r =
      (HttpWebRequest)WebRequest.Create("http://www.google.com");
    r.Method = "POST";
    using (Stream stream = myRequest.GetRequestStream()) {
        // Write data to stream
    }
    WebResponse resp = r.GetResponse();
    // Do soemthing with the resp
    
    0 讨论(0)
提交回复
热议问题