1

PCLは多くの WebRequests を行う私のプロジェクトで を使用しています。

UserAgent を設定しないと、API が呼び出しを受け付けません。これは Windows Phone 8 と Windows 8 では問題ありません。なぜなら、HttpWebRequestには Headers プロパティがあるため、次のようにするだけです。

var request = (HttpWebRequest)WebRequest.Create(cUrlLogin);
request.Headers[HttpRequestHeader.UserAgent] = cUserAgent;
request.Headers[HttpRequestHeader.Referer] = cUrlHalo;

しかし、Windows フォームと WPF では、メソッドを使用して設定する必要があります。

var request = (HttpWebRequest)WebRequest.Create(cUrlLogin);
request.UserAgent = cUserAgent;
request.Referer = cUrlHalo;

しかし、これは PCL では許可されていません。別の方法を試してみると、エラーがスローされます。

追加情報: 'User-Agent' ヘッダーは、適切なプロパティまたはメソッドを使用して変更する必要があります。

WINDOWS_FORMSBuild Conditionals にorを入れてみたりWPF、.UserAgent/.Referer を使用して if ステートメントを設定したりしようとしましたが、役に立ちませんでした。誰かがこれに遭遇し、回避策を見つけましたか?

4

2 に答える 2

4

これは遅い応答ですが、あなたや他の訪問者にとってまだ役に立つかもしれません. 関数:

public void SetHeader(HttpWebRequest Request, string Header, string Value) {
    // Retrieve the property through reflection.
    PropertyInfo PropertyInfo = Request.GetType().GetProperty(Header.Replace("-", string.Empty));
    // Check if the property is available.
    if (PropertyInfo != null) {
        // Set the value of the header.
        PropertyInfo.SetValue(Request, Value, null);
    } else {
        // Set the value of the header.
        Request.Headers[Header] = Value;
    }
}

これはプロパティの設定を試み、その後はヘッダーにデフォルト設定されます。使用例:

// Initialize a new instance of the HttpWebRequest class.
HttpWebRequest Request = WebRequest.Create(Address) as HttpWebRequest;
// Set the value of the user agent.
SetHeader(Request, "User-Agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)");
// Set the value of the referer.
SetHeader(Request, "Referer", Referer.AbsoluteUri);
于 2013-03-12T00:30:12.813 に答える
0

結局、ほとんど同じコードの 2 つのライブラリを作成する必要がありました。Win32 用のクラス ライブラリとしての 1 つのライブラリと、WinRT 用のポータブル クラス ライブラリ。

于 2013-01-26T22:29:30.347 に答える