20 个解决方案
#1
CInternetSession mysession;
CInternetFile* file = NULL;
CString htmlLine;
CString htmlContent;
file = (CInternetFile*) mysession.OpenURL("http://*****/edit.asp");
while (file->ReadString(htmlLine) != NULL)
{
htmlContent = htmlContent + htmlLine;
}
htmlContent保存了edit.asp文件的代码
CInternetFile* file = NULL;
CString htmlLine;
CString htmlContent;
file = (CInternetFile*) mysession.OpenURL("http://*****/edit.asp");
while (file->ReadString(htmlLine) != NULL)
{
htmlContent = htmlContent + htmlLine;
}
htmlContent保存了edit.asp文件的代码
#2
谢谢高手指点,不过我用的是socket写的啊,怎么用socket写呢?我查了一下,它用了cookie,怎样写进cookie呢?
#3
move了返回状态是302吧,你可以得到状态,然后可以在头中找到最新的网址。
读了以后,对头进行拆分,可以得到cookie,然后再将新cookie提交出去。
读了以后,对头进行拆分,可以得到cookie,然后再将新cookie提交出去。
#4
是302,请问提交cookie的格式怎样写呢?
从服务器接受:
HTTP/1.1 302 Object moved
Server: Microsoft-IIS/5.0
Date: Tue, 09 Sep 2003 13:15:08 GMT
Location: edit.asp
Connection: Keep-Alive
Content-Length: 129
Content-Type: text/html
Set-Cookie: adminok=True; path=/asp
Set-Cookie: ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; path=/
Cache-control: private
.......
从服务器接受:
HTTP/1.1 302 Object moved
Server: Microsoft-IIS/5.0
Date: Tue, 09 Sep 2003 13:15:08 GMT
Location: edit.asp
Connection: Keep-Alive
Content-Length: 129
Content-Type: text/html
Set-Cookie: adminok=True; path=/asp
Set-Cookie: ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; path=/
Cache-control: private
.......
#5
你给http server send():"GET http://*****/edit.asp HTTP/1.1\r\n\r\n".然后recv()就可以得到edit.asp的内容,不过前边也有个头。你最好先"HEAD http://*****/edit.asp HTTP/1.1\r\n\r\n"得到头的内容,然后再GET,最后把头删了。(我正做通过代理下东西得玩意儿,就是这么干的。)
不过得告诉你,你得到的结果是说你要获得的edit.asp不在你提供的url下。也就是说你的url是错的。只有得到头是"HTTP/1.1 200 OK\r\n"开头的头才说明正确。
当然,你说的估计是直接给服务器更新内容,我感觉是你没更新成功,或其他原因。我用这个方法下载是一点问题也没有。
不过得告诉你,你得到的结果是说你要获得的edit.asp不在你提供的url下。也就是说你的url是错的。只有得到头是"HTTP/1.1 200 OK\r\n"开头的头才说明正确。
当然,你说的估计是直接给服务器更新内容,我感觉是你没更新成功,或其他原因。我用这个方法下载是一点问题也没有。
#6
推荐看看rfc 1945.
#7
302 Moved Temporarily
请求到的资源在一个不同的URL处临时保存。因为重定向有时会被更改,客户端
应继续用请求URI来发出以后的请求。
新的URL必须由回应中的位置域指定。除非是HEAD请求,否则回应的实体主体
(Entity-Body)必须包括对新URL超链接的简要描述。
如果用POST方法发出请求,而接收到302回应状态码。在这种情况下,除非用户
确认,否则用户代理不必自动重定向请求,因为这将导致改变已发出请求的环境。
注意:当在接收到302状态码后而自动重定向POST请求时,一些现存的用户代理
会错误地将其改为GET请求
//以上是china_pub/emook翻译的rfc1945 关于302的描述。
请求到的资源在一个不同的URL处临时保存。因为重定向有时会被更改,客户端
应继续用请求URI来发出以后的请求。
新的URL必须由回应中的位置域指定。除非是HEAD请求,否则回应的实体主体
(Entity-Body)必须包括对新URL超链接的简要描述。
如果用POST方法发出请求,而接收到302回应状态码。在这种情况下,除非用户
确认,否则用户代理不必自动重定向请求,因为这将导致改变已发出请求的环境。
注意:当在接收到302状态码后而自动重定向POST请求时,一些现存的用户代理
会错误地将其改为GET请求
//以上是china_pub/emook翻译的rfc1945 关于302的描述。
#8
写这么多啊,谢谢了,具体情况是这样的,首先登陆的是一个login.asp 页面,通过密码验证后,重定向到edit.asp,第一步post,我想好象是正确的,因为如果是错误的,是定向到err.asp,不然就不会重定向到edit.asp页面.....我现在的情况是第一步post后,怎样获得edit.asp的内容?
#9
我刚刚用CInternetSession做过类似的东西,类似的流程。
#10
能说说如何redirection的吗?
#11
怎样实现重定向和cookie?
#12
gz Cookie
#13
"gz Cookie"什么意思?能说祥细点吗
#14
我感觉post以后,页面MOVE了,但是得到了cookie可能是一种技术, MOVE到一个新页面,完全可以改成get带着cookie提交到网站上。IE就是这种做的,我sniffer过好些回。
#15
能告诉我你的“get带着cookie”的格式是怎么写的吗?
#16
你sinnfer一下IE,就能看到。你对头一点都不了解吗?
Set-Cookie: adminok=True; path=/asp
Set-Cookie: ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; path=/
就是说这个网站的Cookie是adminok=True;这个cookie的有效范围是/asp下的如有文件,包括子路径
Cookie是ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; 有效范围是/,就是整个网站。
你提交的时时候,只要在http头的底部加一个:Cookie:adminok=True;ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK;就行了。
如果你还不如白,请看RFC,查http协议。
Set-Cookie: adminok=True; path=/asp
Set-Cookie: ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; path=/
就是说这个网站的Cookie是adminok=True;这个cookie的有效范围是/asp下的如有文件,包括子路径
Cookie是ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; 有效范围是/,就是整个网站。
你提交的时时候,只要在http头的底部加一个:Cookie:adminok=True;ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK;就行了。
如果你还不如白,请看RFC,查http协议。
#17
等了这么多天终于遇到高手了,好,我试试,谢谢
#18
问题已解决,谢谢楼上各位高手!
#19
特别感谢 philis(明天会更好)提供帮助!!!
#20
不客气。
#21
#1
CInternetSession mysession;
CInternetFile* file = NULL;
CString htmlLine;
CString htmlContent;
file = (CInternetFile*) mysession.OpenURL("http://*****/edit.asp");
while (file->ReadString(htmlLine) != NULL)
{
htmlContent = htmlContent + htmlLine;
}
htmlContent保存了edit.asp文件的代码
CInternetFile* file = NULL;
CString htmlLine;
CString htmlContent;
file = (CInternetFile*) mysession.OpenURL("http://*****/edit.asp");
while (file->ReadString(htmlLine) != NULL)
{
htmlContent = htmlContent + htmlLine;
}
htmlContent保存了edit.asp文件的代码
#2
谢谢高手指点,不过我用的是socket写的啊,怎么用socket写呢?我查了一下,它用了cookie,怎样写进cookie呢?
#3
move了返回状态是302吧,你可以得到状态,然后可以在头中找到最新的网址。
读了以后,对头进行拆分,可以得到cookie,然后再将新cookie提交出去。
读了以后,对头进行拆分,可以得到cookie,然后再将新cookie提交出去。
#4
是302,请问提交cookie的格式怎样写呢?
从服务器接受:
HTTP/1.1 302 Object moved
Server: Microsoft-IIS/5.0
Date: Tue, 09 Sep 2003 13:15:08 GMT
Location: edit.asp
Connection: Keep-Alive
Content-Length: 129
Content-Type: text/html
Set-Cookie: adminok=True; path=/asp
Set-Cookie: ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; path=/
Cache-control: private
.......
从服务器接受:
HTTP/1.1 302 Object moved
Server: Microsoft-IIS/5.0
Date: Tue, 09 Sep 2003 13:15:08 GMT
Location: edit.asp
Connection: Keep-Alive
Content-Length: 129
Content-Type: text/html
Set-Cookie: adminok=True; path=/asp
Set-Cookie: ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; path=/
Cache-control: private
.......
#5
你给http server send():"GET http://*****/edit.asp HTTP/1.1\r\n\r\n".然后recv()就可以得到edit.asp的内容,不过前边也有个头。你最好先"HEAD http://*****/edit.asp HTTP/1.1\r\n\r\n"得到头的内容,然后再GET,最后把头删了。(我正做通过代理下东西得玩意儿,就是这么干的。)
不过得告诉你,你得到的结果是说你要获得的edit.asp不在你提供的url下。也就是说你的url是错的。只有得到头是"HTTP/1.1 200 OK\r\n"开头的头才说明正确。
当然,你说的估计是直接给服务器更新内容,我感觉是你没更新成功,或其他原因。我用这个方法下载是一点问题也没有。
不过得告诉你,你得到的结果是说你要获得的edit.asp不在你提供的url下。也就是说你的url是错的。只有得到头是"HTTP/1.1 200 OK\r\n"开头的头才说明正确。
当然,你说的估计是直接给服务器更新内容,我感觉是你没更新成功,或其他原因。我用这个方法下载是一点问题也没有。
#6
推荐看看rfc 1945.
#7
302 Moved Temporarily
请求到的资源在一个不同的URL处临时保存。因为重定向有时会被更改,客户端
应继续用请求URI来发出以后的请求。
新的URL必须由回应中的位置域指定。除非是HEAD请求,否则回应的实体主体
(Entity-Body)必须包括对新URL超链接的简要描述。
如果用POST方法发出请求,而接收到302回应状态码。在这种情况下,除非用户
确认,否则用户代理不必自动重定向请求,因为这将导致改变已发出请求的环境。
注意:当在接收到302状态码后而自动重定向POST请求时,一些现存的用户代理
会错误地将其改为GET请求
//以上是china_pub/emook翻译的rfc1945 关于302的描述。
请求到的资源在一个不同的URL处临时保存。因为重定向有时会被更改,客户端
应继续用请求URI来发出以后的请求。
新的URL必须由回应中的位置域指定。除非是HEAD请求,否则回应的实体主体
(Entity-Body)必须包括对新URL超链接的简要描述。
如果用POST方法发出请求,而接收到302回应状态码。在这种情况下,除非用户
确认,否则用户代理不必自动重定向请求,因为这将导致改变已发出请求的环境。
注意:当在接收到302状态码后而自动重定向POST请求时,一些现存的用户代理
会错误地将其改为GET请求
//以上是china_pub/emook翻译的rfc1945 关于302的描述。
#8
写这么多啊,谢谢了,具体情况是这样的,首先登陆的是一个login.asp 页面,通过密码验证后,重定向到edit.asp,第一步post,我想好象是正确的,因为如果是错误的,是定向到err.asp,不然就不会重定向到edit.asp页面.....我现在的情况是第一步post后,怎样获得edit.asp的内容?
#9
我刚刚用CInternetSession做过类似的东西,类似的流程。
#10
能说说如何redirection的吗?
#11
怎样实现重定向和cookie?
#12
gz Cookie
#13
"gz Cookie"什么意思?能说祥细点吗
#14
我感觉post以后,页面MOVE了,但是得到了cookie可能是一种技术, MOVE到一个新页面,完全可以改成get带着cookie提交到网站上。IE就是这种做的,我sniffer过好些回。
#15
能告诉我你的“get带着cookie”的格式是怎么写的吗?
#16
你sinnfer一下IE,就能看到。你对头一点都不了解吗?
Set-Cookie: adminok=True; path=/asp
Set-Cookie: ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; path=/
就是说这个网站的Cookie是adminok=True;这个cookie的有效范围是/asp下的如有文件,包括子路径
Cookie是ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; 有效范围是/,就是整个网站。
你提交的时时候,只要在http头的底部加一个:Cookie:adminok=True;ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK;就行了。
如果你还不如白,请看RFC,查http协议。
Set-Cookie: adminok=True; path=/asp
Set-Cookie: ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; path=/
就是说这个网站的Cookie是adminok=True;这个cookie的有效范围是/asp下的如有文件,包括子路径
Cookie是ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK; 有效范围是/,就是整个网站。
你提交的时时候,只要在http头的底部加一个:Cookie:adminok=True;ASPSESSIONIDGGGQGHMK=BFAIAMNCNNMNIFFEOELCHNHK;就行了。
如果你还不如白,请看RFC,查http协议。
#17
等了这么多天终于遇到高手了,好,我试试,谢谢
#18
问题已解决,谢谢楼上各位高手!
#19
特别感谢 philis(明天会更好)提供帮助!!!
#20
不客气。