2011-02-10 11 views
0

コンテンツタイプJSON形式の単純なresponse.writeを実行するC#.net webformがあります。 Androidの携帯電話からのTinyWebDB API呼び出しを含めて、私がテストしたすべてのクライアントの偉大な作品ですが、この質問についてはAPIについて心配する必要はありません。C#.net System.Net.WebClient ..サーバー側かどうか

次のように、Webページを読み書きするために、そのWebフォームにサーバーサイドコードを追加しました。

System.Net.WebClient myWebClient = new System.Net.WebClient(); 
Stream myStream = myWebClient.OpenRead(what); 
StreamReader sr = new StreamReader(myStream); 
string s = sr.ReadToEnd(); 

私はコードがすべてサーバーサイドであるという印象を受けています!

私はIE、FF、Chromeからページをテストしました。すべてうまく動作します。しかし、TinyWebDBからWebフォームのページを呼び出そうとすると、呼び出しがうまくいってデータが返ってきますが、サーバー側で404エラーが表示されます。

System.Net.WebClientがクライアントから何かを要求している、または何かをしているかのようになります。私は、ページの読書がすべてサーバーサイドで起こっていたと思っていました。私のサーバサイドのコードは、どのブラウザやAPIがWebフォームの呼び出しを開始したかを気にするのはなぜですか?

別のクラスを使用すべきですか?

多くのありがとうございます。

+3

クライアントで「何かしている」ことはできません。コードはサーバー上にあります。あなたは間違っていて問題は何か他のものです –

+0

さらに詳しい情報が必要です。このコードが呼び出されるかどうかを決定する何か、おそらくクエリ文字列変数またはWebメソッドがありますか?サーバー側で実行されるため、同じような実装の詳細のみが、サーバーが同じでもクライアントが異なる場合、異なる動作を引き起こす可能性があります。 – Kris

+0

私もそう思うでしょう。私はすべてを切り離し、上記のコードをtry/catchでラップし、その結果をAPIに返します。すべてのクライアントから、私はページからの出力がtinyWebDB APIコールを読んだことを知っています。リモート・サーバからエラーが返されたという情報が返されます。(404)Not Found。私はそれが処理しようとしたものも見ており、他のすべてのクライアントと一致しています。 – o365spo

答えて

0

これはサーバサイドコードです。

変数「what」はどこに設定されますか?フォームTinyWebDBクライアントはフォームの入力値を無視していますか?

リクエストしているサイトが速すぎて、毎回そのクライアントとして不運になってしまったため、リクエストを拒否している可能性がありますか?

+0

それは私が考えてきた唯一のもっともらしいものです。ブロックの最後にスリープ3000を追加しましたが、同じ結果です。これは実際のフォームではなく、コンテンツタイプJSONでResponse.Writeを実行するだけです。コードはうまくいきます。そのAPIから呼び出すと、データに404が返されます。 – o365spo

+0

APIが3秒間返ってくるのを見ると、私のページが送信している他の固定データとともに404が報告されているので、上記のコードが接続に失敗していることがわかります。ブラウザからテストしたのと同じ正確なページが良い結果を返します。うんざりする気がする。 – o365spo

+0

これはODDですが、私のAPI TinyWebDBを介して、私が言及したようにwebclientで掻き集めようとするクエリ文字列を送ります。クエリ文字列のテキストを見ると、うまく見えますが、長さを実行すると、表示される文字数よりも約10文字多いと報告されます。 ASCII以外の文字をすべて削除する機能はありますか? – o365spo

関連する問題