HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0525
名無しhspsockのHTTP通信について4解決


名無し

リンク

2013/5/25(Sat) 19:04:16|NO.54281

hspsockを使って、HTTP通信をしようと思ったのですが
404しか出ません。どうすればいいでしょうか?
ブラウザなどでURLを直接入力すれば、普通にアクセスができます。


#include "hspsock.as" ; ; TCP/IP socket sample for HSP3.0 ; HTTPサーバーと接続してファイルを受信する ; cls 1 sdim buf,32000 ; pos 0,128 mesbox buf,620,310,1 objsize 100,24,24 ; pos 100,0 url="":rdir="" input url,480 input rdir,480 ; pos 0,0 mes "URL HTTP://" mes "DIRECTORY" ; pos 0,60 button "CONNECT",*sd button "BYE",*bye ; rdir="/play/pforum.php":objprm 2,rdir url="hsp.tv":objprm 1,url wait 10 ; stop *sd ; HTTPに接続、ファイルを取得 ; title "Connecting... ["+url+rdir+"]" sockopen 0,url,80 if stat : dialog "ERROR\nSTAT="+stat : goto *sdover sockput "GET "+rdir+" HTTP/1.0\nHost:???\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.75 Safari/535.7\n\n" if stat : dialog "socket error" : goto *sdover ; buf="":a="" b=0:sz=0 *wloop await 0 sockget a,64 if stat : dialog "socket error" : goto *sdover b=peek(a,0):if b=0 : goto *sdok buf+=a sz+=64:title "recieve "+sz if sz>30000 : dialog "受信サイズがオーバーしました。" : goto *sdok goto *wloop *sdok objprm 0,buf title "Completed." *sdover sockclose stop *bye end



この記事に返信する


晩御飯

リンク

2013/5/25(Sat) 19:12:08|NO.54282

うろ覚えだけどリクエスト送るとき\nじゃなくて\r\nだったと思うよ



どこぞのだれか

リンク

2013/5/25(Sat) 19:23:28|NO.54283




test

リンク

2013/5/25(Sat) 19:23:47|NO.54284

Hostヘッダを???としているのが原因です。

Hostヘッダはなんというドメイン名のサーバーにアクセスしようとしているかを相手に伝えるためのものです。
Webサイトにアクセスする場合、DNSでサーバーのIPアドレスを取得してそこにリクエストを送ります。しかし、同じサーバーが別のドメイン名のサイトも持っていた場合、サーバー側はどのサイトにアクセスされたか分かりません。
そこで、どのドメイン名のサイトにアクセスしたいのかを相手に教えるのがHostヘッダの役割です。
そのHostヘッダで変な情報を送ったので、サーバー側が勘違いして404を返したのだと思います。



名無し

リンク

2013/5/25(Sat) 19:36:42|NO.54285

皆様、回答ありがとうございます。

>>Hostヘッダを???としているのが原因です。
原因はこれでした。



ONION software Copyright 1997-2023(c) All rights reserved.