0

仕入先サイトでセットアップ要求を行う必要がある注文 Web サイトがあります。このために、私は WebHanlder (ashx ファイル) を使用して、正常に動作している HttpContext オブジェクトを使用して cXML でセットアップ要求を読み取ります。

要件の 1 つは、「Buyer Cookie」と呼ばれる Cookie を cXML 200 OK 応答と共に送り返すことです。

私が抱えている問題は、コンテキストでCookieを作成するときです.Responseを実行すると、注文サイトで受信されませんresponse.Output.Write().

書き込み後に使用してみresponse.Flush()ましたが、まだ機能していません

呼び出し元のサイトに Cookie を送り返すにはどうすればよいですか?

これが私のコードです:

注文サイト

Stream stream = null;
byte[] bytes = Encoding.ASCII.GetBytes(File.ReadAllText(@"D:\Prototypes\HTTPPost\cXMLFiles\PunchOutSetupRequest.xml"));
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://localhost:45454/PunchOutRequest.ashx");

webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.Method = "POST";
webRequest.ContentLength = bytes.Length;

try
{
    stream = webRequest.GetRequestStream();
    stream.Write(bytes, 0, bytes.Length);
}
catch (Exception)
{
    throw;
}
finally
{
    if (stream != null)
        stream.Close();
}

HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader responseReader = new StreamReader(responseStream);

string r = responseReader.ReadToEnd();
var buy = webRequest.CookieContainer;
var buyer = response.Cookies["BuyerCookie"]; // This is always null

仕入先サイト

var request = context.Request;
StreamReader reader = new StreamReader(request.InputStream);

string text = reader.ReadToEnd();

POSetup setup = new POSetup();

if (setup.IsSetupRequestValid(text))
{
    HttpCookie cookie = new HttpCookie("BuyerCookie", "100");

    context.Response.Cookies.Add(cookie);
    context.Response.Output.Write(setup.GetOKResponse());
}
4

1 に答える 1

1

次の行を追加してみてください。

webRequest.CookieContainer = new CookieContainer();

直後の

webRequest.ContentLength = bytes.Length;
于 2012-04-24T17:55:03.503 に答える