Mailgun APIを使用しています。それらにURLを提供する必要があるセクションがあり、それらはデータをHTTPポストするつもりです。
このURL( http://test.com/MailGun/Webhook.aspx )をMailgunに提供して、データを投稿できるようにします。送信するパラメーター名のリストがあります(受信者、ドメイン、IP、...)。
投稿されたデータを自分のページにどのように取得するかわかりません。 Webhook.aspxページで、次のようなコードを試しましたが、それらはすべて空です。
lblrecipient.text= Request.Form["recipient"];
lblip.Text= Request.Params["ip"];
lbldomain.Text = Request.QueryString["domain"];
投稿されたデータを取得するために何をしようとしたらよいかわかりませんか?
このコードは、POSTで送信されているすべてのフォーム変数をリストします。これにより、投稿値の適切な名前があるかどうかを確認できます。
string[] keys = Request.Form.AllKeys;
for (int i= 0; i < keys.Length; i++)
{
Response.Write(keys[i] + ": " + Request.Form[keys[i]] + "<br>");
}
このコードは、HTTP要求から生の入力ストリームを読み取ります。 Request.Formまたは他のモデルバインディングでデータが利用できない場合、またはバイト/テキストにアクセスする必要がある場合に使用します。
using(var reader = new StreamReader(Request.InputStream))
content = reader.ReadToEnd();
単純にRequest["recipient"]
を使用して、「Webリクエスト中にクライアントから送信されたHTTP値を読み取る」ことができます。
QueryString、Form、Cookie、またはServerVariablesコレクションからデータにアクセスするには、Request ["key"]を記述できます
ソース: MSDN
更新:会話の要約
MailGunがサイトに投稿している値を表示するには、MailGunが作成しているWebリクエストから値を読み取り、どこかに記録してからページに表示する必要があります。
MailGunがPOST値を送信するエンドポイントと、記録された値を表示するために使用する別のページが必要です。
現在、1ページあるようです。したがって、このページを表示してリクエスト値を読むと、MailGunではなく、リクエストから値を読んでいることになります。
ステップがありません。サーバーに値を記録/保存する必要があります(mailgunはクライアントです)。次に、サーバーでこれらの値を取得する必要があります(Webブラウザーを備えたPCがクライアントになります)。これらは、まったく異なる2つのaspxファイル(または異なるパラメーターを持つ同じファイル)です。
aspxページ1(mailgunにあるもの):
var val = Request.Form["recipient"];
var file = new File(filename);
file.write(val);
close(file);
aspxページ2:
var contents = "";
if (File.exists(filename))
var file = File.open(filename);
contents = file.readtoend();
file.close()
Request.write(contents);
これを使って:
public void ShowAllPostBackData()
{
if (IsPostBack)
{
string[] keys = Request.Form.AllKeys;
Literal ctlAllPostbackData = new Literal();
ctlAllPostbackData.Text = "<div class='well well-lg' style='border:1px solid black;z-index:99999;position:absolute;'><h3>All postback data:</h3><br />";
for (int i = 0; i < keys.Length; i++)
{
ctlAllPostbackData.Text += "<b>" + keys[i] + "</b>: " + Request[keys[i]] + "<br />";
}
ctlAllPostbackData.Text += "</div>";
this.Controls.Add(ctlAllPostbackData);
}
}
Webブラウザーで、開発者コンソール(ChromeおよびIEのF12)を開き、[ネットワーク]タブを開いて、要求と応答のデータを確認します。別のオプション-Fiddlerを使用します( http://fiddler2.com/ )。
ページに送信されているときにPOSTリクエストが表示されたら、クエリ文字列とヘッダーを調べます。データがクエリ文字列で送信されるのか、フォームとして送信されるのか、あるいはページにまったく送信されていないのかがわかります。
UPDATE:申し訳ありませんが、最初にMailGun APIを確認する必要がありました。ブラウザを経由せず、リクエストはサーバーから直接送信されます。 MailGunからPOSTを取得したら、Request.Paramsのすべてのメンバーをデバッグおよび検査する必要があります。
これを試して
string[] keys = Request.Form.AllKeys;
var value = "";
for (int i= 0; i < keys.Length; i++)
{
// here you get the name eg test[0].quantity
// keys[i];
// to get the value you use
value = Request.Form[keys[i]];
}
私の場合、投稿データをヘッダーに割り当てたため、次のように取得します。
protected void Page_Load(object sender, EventArgs e){
...
postValue = Request.Headers["Key"];
これは、値とキーをPOST
に添付する方法です。
var request = new NSMutableUrlRequest(url){
HttpMethod = "POST",
Headers = NSDictionary.FromObjectAndKey(FromObject(value), FromObject("key"))
};
webView.LoadRequest(request);