From 265933872a3cfb336df92607f17ebb1d837361f5 Mon Sep 17 00:00:00 2001 From: "gagan%netscape.com" Date: Wed, 4 Aug 1999 15:06:51 +0000 Subject: [PATCH] POST requests for HTTP work now! Go file bugs using apprunner now... --- uriloader/base/nsDocLoader.cpp | 21 +++++++++++++++------ webshell/src/nsDocLoader.cpp | 21 +++++++++++++++------ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/uriloader/base/nsDocLoader.cpp b/uriloader/base/nsDocLoader.cpp index f579649dd5b0..c2ae0083eace 100644 --- a/uriloader/base/nsDocLoader.cpp +++ b/uriloader/base/nsDocLoader.cpp @@ -45,6 +45,8 @@ #include "nsIURL.h" #include "nsIDNSService.h" #include "nsIChannel.h" +#include "nsIHTTPChannel.h" +#include "nsHTTPEnums.h" #include "nsIProgressEventSink.h" #endif // NECKO #include "nsIGenericFactory.h" @@ -132,7 +134,7 @@ public: nsIInputStream* aPostDataStream, nsIStreamListener* aListener); - nsresult Bind(nsIURI* aURL, nsIStreamListener* aListener); + nsresult Bind(nsIURI* aURL, nsIStreamListener* aListener, nsIInputStream *postDataStream = nsnull); #ifdef NECKO // nsIStreamObserver methods: @@ -1583,9 +1585,6 @@ nsresult nsDocumentBindInfo::Bind(const nsString& aURLSpec, /* Store any POST data into the URL */ if (nsnull != aPostDataStream) { #ifdef NECKO - NS_ASSERTION(0, "FIX ME"); - - #else static NS_DEFINE_IID(kPostToServerIID, NS_IPOSTTOSERVER_IID); @@ -1620,14 +1619,15 @@ nsresult nsDocumentBindInfo::Bind(const nsString& aURLSpec, /* * Initiate the network request... */ - rv = Bind(url, aListener); + rv = Bind(url, aListener, aPostDataStream); + NS_IF_RELEASE(aPostDataStream); NS_RELEASE(url); return rv; } -nsresult nsDocumentBindInfo::Bind(nsIURI* aURL, nsIStreamListener* aListener) +nsresult nsDocumentBindInfo::Bind(nsIURI* aURL, nsIStreamListener* aListener, nsIInputStream *postDataStream) { nsresult rv = NS_OK; @@ -1680,6 +1680,15 @@ nsresult nsDocumentBindInfo::Bind(nsIURI* aURL, nsIStreamListener* aListener) rv = NS_OpenURI(getter_AddRefs(channel), aURL); if (NS_FAILED(rv)) return rv; + if (postDataStream) + { + nsCOMPtr httpChannel(do_QueryInterface(channel)); + if (httpChannel) + { + httpChannel->SetRequestMethod(HM_POST); + httpChannel->SetPostDataStream(postDataStream); + } + } m_DocLoader->SetDocumentChannel(channel); rv = loadGroup->AddChannel(channel, nsnull); diff --git a/webshell/src/nsDocLoader.cpp b/webshell/src/nsDocLoader.cpp index f579649dd5b0..c2ae0083eace 100644 --- a/webshell/src/nsDocLoader.cpp +++ b/webshell/src/nsDocLoader.cpp @@ -45,6 +45,8 @@ #include "nsIURL.h" #include "nsIDNSService.h" #include "nsIChannel.h" +#include "nsIHTTPChannel.h" +#include "nsHTTPEnums.h" #include "nsIProgressEventSink.h" #endif // NECKO #include "nsIGenericFactory.h" @@ -132,7 +134,7 @@ public: nsIInputStream* aPostDataStream, nsIStreamListener* aListener); - nsresult Bind(nsIURI* aURL, nsIStreamListener* aListener); + nsresult Bind(nsIURI* aURL, nsIStreamListener* aListener, nsIInputStream *postDataStream = nsnull); #ifdef NECKO // nsIStreamObserver methods: @@ -1583,9 +1585,6 @@ nsresult nsDocumentBindInfo::Bind(const nsString& aURLSpec, /* Store any POST data into the URL */ if (nsnull != aPostDataStream) { #ifdef NECKO - NS_ASSERTION(0, "FIX ME"); - - #else static NS_DEFINE_IID(kPostToServerIID, NS_IPOSTTOSERVER_IID); @@ -1620,14 +1619,15 @@ nsresult nsDocumentBindInfo::Bind(const nsString& aURLSpec, /* * Initiate the network request... */ - rv = Bind(url, aListener); + rv = Bind(url, aListener, aPostDataStream); + NS_IF_RELEASE(aPostDataStream); NS_RELEASE(url); return rv; } -nsresult nsDocumentBindInfo::Bind(nsIURI* aURL, nsIStreamListener* aListener) +nsresult nsDocumentBindInfo::Bind(nsIURI* aURL, nsIStreamListener* aListener, nsIInputStream *postDataStream) { nsresult rv = NS_OK; @@ -1680,6 +1680,15 @@ nsresult nsDocumentBindInfo::Bind(nsIURI* aURL, nsIStreamListener* aListener) rv = NS_OpenURI(getter_AddRefs(channel), aURL); if (NS_FAILED(rv)) return rv; + if (postDataStream) + { + nsCOMPtr httpChannel(do_QueryInterface(channel)); + if (httpChannel) + { + httpChannel->SetRequestMethod(HM_POST); + httpChannel->SetPostDataStream(postDataStream); + } + } m_DocLoader->SetDocumentChannel(channel); rv = loadGroup->AddChannel(channel, nsnull);