データをプロキシサーバーに送信する単純なプロキシサーバーをセットアップしようとしています。プロキシサーバーは、投稿されたデータを実際のサーバーに転送し、実際のサーバーから応答を取得します。次に、リクエストを行ったWebサイトが読み取り、データを処理するプロキシサーバーに応答を表示します。ウェブサイトからの生の投稿データを取得する最初の部分で問題が発生しています。asmxファイルは常にパラメーターから処理を実行したいようですが、私のプロキシは生の要求を転送したいだけです。パラメータを知りません。以下は、プロキシサーバーへのリクエストの例です。localhost/ mobile.asmx POST {"userName": "fake@email.com"、 "password": "xxxx"、 "appID": "2302FF64-925D-4E0E-B086- 73AA9FF152D8 "}
もう一度、ユーザー名とパスワードだけを取得したくありません。完全なrawリクエストをキャプチャして、実サーバーに転送したいと思います。
私はたくさんのことを試しました。リクエストパラメータがないため、リクエストを使用できません。また、生の投稿データのストリームが読み取られた後に関数GETUSERTOKENLOGINが実行されるため、ストリームを使用してデータを取得できなくなったと思います。私はかなり多くのことを試みました。
可能であれば、これを非常に単純なスクリプトにしたいと思います。以下は私の超簡単な例です。データのラッパーを追加するだけでよいことはわかっていますが、そうする必要はありません。
どんな助けでも大歓迎です。 MOBILE.ASMX
<%@ WebService Language="C#" Class="mobile" %>
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using System.Net;
using System.IO;
using System.Web.Script.Services;
using System.Text;
[WebServiceBinding(ConformsTo = WsiProfiles.None)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class mobile : System.Web.Services.WebService
{
public mobile()
{
}
// The HelloWorld() example service returns the string Hello World.
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetUserTokenLogin()
{
// Create a new request to the mentioned URL.
WebRequest myWebRequest = WebRequest.Create("http://api.geonames.org/citiesJSON");
myWebRequest.Method = "POST";
Stream dataStream = myWebRequest.GetRequestStream();
WebResponse myWebResponse = myWebRequest.GetResponse();
// Print the HTML contents of the page to the console.
Stream streamResponse = myWebResponse.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
Char[] readBuff = new Char[256];
int count = streamRead.Read(readBuff, 0, 256);
String FullData = "";
while (count > 0)
{
String outputData = new String(readBuff, 0, count);
FullData = FullData + outputData;
count = streamRead.Read(readBuff, 0, 256);
}
// Close the Stream object.
streamResponse.Close();
streamRead.Close();
myWebResponse.Close();
return FullData;
}
}