2017-04-04 16 views
0

私のC#コードは、リクエストを別のURLにリダイレクトする必要があるAPIサービス(PHP)を呼び出しています。返す前にレスポンスを処理します。ここに私のC#のコードは次のとおりです。コンテンツのある別のURLにリダイレクト

proxy.php
HttpWebRequest request = null; 
WebResponse response = null; 
Stream writer = null; 

request = (HttpWebRequest)WebRequest.Create(http://www.somewhere.com/proxy.php); 
request.Method = "POST"; 
request.ContentType = "multipart/form-data; boundary=" + this.builder.Boundry; 

this.builder.RequestStream.Position = 0; 
byte[] tempBuffer = new byte[this.builder.RequestStream.Length]; 
this.builder.RequestStream.Read(tempBuffer, 0, tempBuffer.Length); 

writer = await request.GetRequestStreamAsync().ConfigureAwait(false); 
writer.Write(tempBuffer, 0, tempBuffer.Length); 
writer = null; 

response = await request.GetResponseAsync().ConfigureAwait(false); 

そして:

<?php 
    // 1. Redirect everything (with the content stream from the C# code) to http://www.elsewhere.com 
    // 2. Process the response from http://www.elsewhere.com 
    // 3. Return processed data to my C# code 
?> 

私はこれをどのように行うことができますか?それは私がこのラインに置く要求ストリームをリダイレクトする必要があります。

writer = await request.GetRequestStreamAsync().ConfigureAwait(false); 
writer.Write(tempBuffer, 0, tempBuffer.Length); 
+0

http://php.net/manual/en/function.header.php – mkaatman

+0

最初からelsewhere.comに電話をかけてみませんか? –

+0

'proxy.php'はelsewhere.comからの応答を受け取り、それをC#コードに返す前に変更する必要があるためです。 – Darius

答えて

0

あなたが別のページにリダイレクトするために、PHPで場所ヘッダーを使用することができます。

<?php 
    header("Location: http://www.somesite.com/another_page.php"); 
    exit(); 
?> 

どんなに呼び出し側プログラムは、C#や他のです言語。

+0

これは、私のC#アプリケーションに戻る前に応答を処理することはできませんので、動作しません。 – Darius

+0

テストしましたか? –

+0

'<?ph header("場所:http://他の場所 "); echo "この行は表示されません"; ?> ' – Darius

0

返す前に結果を処理するには、PHP側でcURLのようなものを使用する必要があります。ここで

は、データを取得するためのcURLを使用する例である。これはまた、PHPの設定に依存します

function getData(){ 
    $curl = curl_init("http://thewebsite.com/api/whatever"); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    $data = curl_exec($curl); 
    curl_close($curl); 
    return $data; 
} 

、一部のインストールは、cURLのモジュールが有効になって/インストールされていません。

+0

ここにもう一つのよいcURLの例があります。http://stackoverflow.com/questions/9802788/call-a-rest-api-in-php – MrZander

+0

私がリクエストストリームに入れたコンテンツ(私のC#コードから)カールコールに含まれる?または、実行する前に手動で追加する必要がありますか? – Darius

+0

@Darius手動で追加する必要があります。これは、PHPスクリプトを実行しているサーバーからの全く新しいAPI呼び出しです。 – MrZander

関連する問題