Как опубликовать пользовательский определенный пользователем объект в URL?

MyObject myobject = new MyObject (); myobject.name = "Test"; myobject.address = "тест"; myobject.contactno = 1234; string url = " http://www.myurl.com/Key/1234 ?" + миобъект; WebRequest myRequest = WebRequest.Create (url); WebResponse myResponse = myRequest.GetResponse (); myResponse.Close ();

Теперь вышеприведенное не работает, но если я попытаюсь вручную выполнить переход по URL-адресу, он будет работать

"http://www.myurl.com/Key/1234?name=Test&address=test&contactno=1234

. Может кто-нибудь сказать мне, что я делаю здесь неправильно?

1
задан Asaph 30 August 2010 в 15:59
поделиться

3 ответа

тип объекта в виде строки.

Вам нужно выбрать каждое свойство и добавить его в строку запроса вместе с его значением. Для этого вы можете использовать класс PropertyInfo.

foreach (var propertyInfo in myobject.GetType().GetProperties())
{
     url += string.Format("&{0}={1}", propertyInfo.Name, propertyInfo.GetValue(myobject, null));
}

Метод GetProperties() перегружен и может вызываться с BindingFlags, чтобы возвращались только определенные свойства (например, BindingFlags.Public для возврата только общедоступных свойств). См.: http://msdn.microsoft.com/en-us/library/kyaxdd3x.aspx

1
ответ дан 2 September 2019 в 21:43
поделиться

Я бы рекомендовал определить, как превратить MyObject в значения строки запроса. Создайте метод для объекта, который знает, как установить свойства для всех его значений.

public string ToQueryString()
{
    string s = "name=" + this.name;
    s += "&address=" + this.address;
    s += "&contactno=" + this.contactno;
    return s
}

Затем вместо добавления myObject добавьте myObject.ToQueryString().

1
ответ дан 2 September 2019 в 21:43
поделиться

Вот написанный мной метод tostring -

public override string ToString()
    {
        Type myobject = (typeof(MyObject));
        string url = string.Empty;
        int cnt = 0;
        foreach (var propertyInfo in myobject.GetProperties(BindingFlags.Public | BindingFlags.Instance))
        {
            if (cnt == 0)
            {
                url += string.Format("{0}={1}", propertyInfo.Name, propertyInfo.GetValue(this, null));
                cnt++;
            }
            else
                url += string.Format("&{0}={1}", propertyInfo.Name, propertyInfo.GetValue(this, null));
        }
        return url;
    }
0
ответ дан 2 September 2019 в 21:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: