0

認証が必要な Web サイトに自動的にアクセスする必要があります。この Web サイトの http ホストの Cookie 文字列を見つけました (フィドラーを使用)。この文字列を Cookie オブジェクトに変換し、それを Web クライアントに渡して認証を渡す方法はありますか?

4

2 に答える 2

0

これはC#でうまくいきました。

   public static Cookie ToCookie(this string @this)
    {
        String[] array = @this.Split(';');
        var cookie = new Cookie();
        foreach (var ss in array)
        {
            string key;
            object value;
            var s = ss.Trim();
            int indexOf = s.IndexOf('=');

            if (indexOf != -1) {
                key = s.Substring(0, indexOf).Trim();
                value = s.Substring(indexOf + 1).Trim();
            } else
            {
                key = s.ToTitleCase();
                value = true;
            }

            var prop = cookie.GetType().GetProperty(key.ToTitleCase());
            if (prop != null)
            {
                var converted = Convert.ChangeType(value, prop.PropertyType);
                prop.SetValue(cookie, converted, null);
            }else
            {
                cookie.Name = key;
                cookie.Value = value.ToString();
            }
        }
        return cookie;
    }
于 2013-12-06T08:10:09.417 に答える
0

Sting を Cookie オブジェクトに変換します。このためには、文字列を解析して名前、値、パス、ドメインなどを取得する必要があります。

あなたはこのようなことをしなければなりません -

String[] cArray = cookieValueIs.split(";");
        for (String s : cArray) {
                s = s.trim();
                int i1 = s.indexOf('=');
                if (i1 != -1) {
                        String k = s.substring(0, i1).trim();
                        String v = s.substring(i1 + 1).trim();
                        if (k.equalsIgnoreCase(VERSION)) {
                                version = v;
                        } else if (k.equalsIgnoreCase(COMMENT)) {
                                comment = v;
                        } else if (k.equalsIgnoreCase(DOMAIN)) {
                                domain = v;
                        } else if (k.equalsIgnoreCase(PATH)) {
                                path = v;
                        } else if (k.equalsIgnoreCase(MAX_AGE)) {
                                maxAge = v;
                        } else if(k.equalsIgnoreCase(EXPIRES)){
                                continue;
                        }
                        else {
                                key = k;
                                value = v;
                        }
                } else {
                        if (s.equalsIgnoreCase(SECURE)) {
                                secure = true;
                        } else if (s.equalsIgnoreCase(HTTPONLY)) {
                                httpOnly = true;
                        }
                }

これが完了したら、Cookie オブジェクトを作成します。

    Cookie cookie = new Cookie(key,value);
if(comment != null){
                    cookie.setComment(comment);
            }
            if(domain != null){
                    cookie.setDomain(domain);
            }
            if(path != null){
                    cookie.setPath(path);
            }
            if(version != null){
                    cookie.setVersion(Integer.parseInt(version));
            }

            if(secure){
                    cookie.setSecure(true);

これで、文字列が Cookie オブジェクトに変換されます --> cookie

于 2013-07-12T21:33:35.867 に答える