ASP.NET Webservice - PullRequest
       6

ASP.NET Webservice

1 голос
/ 15 апреля 2011

Возможно, я иду по неверному пути. Я довольно новичок в веб-сервисах .net и искал небольшую помощь.

У меня есть веб-сервис геолокации, который я подключил к сети, и я хотел связать результаты со списком или просмотром данных, но я тоже не могу.

Я создал веб-прокси с именем net.webservicex.www, который указывает на веб-сервис на .. http://www.webservicex.net/geoipservice.asmx

Вот мой код c #.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace web_services
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            net.webservicex.www.GeoIPService myProxy = new net.webservicex.www.GeoIPService(); // proxy object
            string ipAddress, result;

            ipAddress = txtIpAddress.Text;

            result = myProxy.GetGeoIP("64.106.166.130");
            lstResults.DataSource = result;
            lstResults.DataMember = "IP";

        }
    }
}

Ошибка, которую я получаю: Ошибка

Невозможно неявно преобразовать тип 'web_services.net.webservicex.www.GeoIP' в 'string' в строке 24

Если бы кто-то мог дать мне несколько советов или идей, это было бы замечательно.

Спасибо! Пол

Ответы [ 6 ]

4 голосов
/ 15 апреля 2011

Вам не нужно помещать его в строку результата

lstResults.DataSource = myProxy.GetGeoIP("64.106.166.130");

Поскольку объект, возвращаемый вашим веб-сервисом, не перечисляем, вы можете обманутьпоместив его в перечисляемый тип:

List<web_services.net.webservicex.www.GeoIP> resultList = new List<web_services.net.webservicex.www.GeoIP>();
resultList.Add(myProxy.GetGeoIP("64.106.166.130"));
lstResults.DataSource = resultList;
2 голосов
/ 05 декабря 2011

Я очень новичок в C # и .net, но вот как я решил это, и я уверен, что это поможет новичкам, таким как я:

Объект результата выглядит так:

<GeoIP><ReturnCode>1</ReturnCode><IP>11.22.33.44</IP><ReturnCodeDetails>Success</ReturnCodeDetails><CountryName>Germany</CountryName><CountryCode>GER</CountryCode></GeoIP>

Итак, очевидно (да, верно ... после плевания крови на это ... смеется), результат не может быть простым типом STRING.Итак, взяв образцы из вышеупомянутых решений, я сделал это так:

Default.aspx.cs:

        mygeoip.GeoIPService getIP = new mygeoip.GeoIPService();
        string myIP = IPTextBox.Text;
        GeoIPService.mygeoip.GeoIP resultList = new GeoIPService.mygeoip.GeoIP();

        resultList = getIP.GetGeoIP(myIP);
        sCountry.Text = resultList.CountryName;
        sCountryCode.Text = resultList.CountryCode;
        sIP.Text = resultList.IP;            

Где - " mygeoip "- это мое имя WebService (вместо« net.webservicex.www »), а GeoIPService - это мое пространство имен.

Default.aspx:

        <asp:TextBox ID="IPTextBox" runat="server"></asp:TextBox>&nbsp;<asp:Button 
        ID="GetWhois" runat="server" Text="Get Whois" onclick="GetWhois_Click" />
<p><asp:Label ID="sCountry" runat="server" Text="Country: "></asp:Label></p>
<p><asp:Label ID="sCountryCode" runat="server" Text="Country: "></asp:Label></p>
<p><asp:Label ID="sIP" runat="server" Text="Country: "></asp:Label></p>

Вот и все - надеюсь, я помог таким начинающим, как я:)

2 голосов
/ 15 апреля 2011

Ошибка в этой строке:

result = myProxy.GetGeoIP("64.106.166.130");

Объект, возвращаемый этим методом, не является строкой, это web_services.net.webservicex.www.GeoIP.

Вы объявили result как строку, которая не соответствует. Возможно, в классе GeoIP есть метод ToString(). Если это так, вы можете изменить свой код на:

string ipAddress;
web_services.net.webservicex.www.GeoIP result;
// or maybe: object result;

ipAddress = txtIpAddress.Text;

result = myProxy.GetGeoIP("64.106.166.130");

И в зависимости от того, как выглядит result, вы можете просто сделать его своим источником данных.

2 голосов
/ 15 апреля 2011

Глядя на wsdl для этого веб-сервиса, кажется, что вызов метода GetGeoIP возвращает объект, а не строку.

Вот почему компилятор жалуется. Вы можете изменить тип результата на ожидаемый объект или использовать ключевое слово var.

1 голос
/ 15 апреля 2011
    GeoIP result;

    ipAddress = "196.36.153.129";

    result = myProxy.GetGeoIP("64.106.166.130");
0 голосов
/ 01 июня 2019

[WebMethod]
        public double ProcitajKursNaDan(DateTime datum, string valuta) {
            List<string> podaci = GetLines("valute.txt");

            double kurs = 0.0;

      
            for (int i = 0; i < podaci.Count; i++) {
                string[] linija = podaci[i].Split('|');
              
                string dat = linija[0];
                string val = linija[1];
                string vrednost = linija[2];

         
                dat = dat.Trim(); 
                val = val.Trim(); 
                vrednost = vrednost.Trim();

               
                DateTime datIzFajla = DateTime.ParseExact(dat, "d/M/yyyy", null);

                double kursIzFajla = Convert.ToDouble(vrednost);


                if (DateTime.Compare(datIzFajla, datum) == 0 && val == valuta)
                    kurs = kursIzFajla;
            }


            return kurs;
        }

        [WebMethod]
        public bool UpisiKursNaDan(DateTime datum, string valuta, double Kurs) {
            string date = datum.ToString("d/M/yyyy");
            string linijaZaUpis = date + " | " + valuta + " | " + Kurs.ToString();

            bool success = false;

            try
            {
                StreamWriter sw = new StreamWriter(Server.MapPath("podaci/valute.txt"), true);
                sw.WriteLine(linijaZaUpis);
                sw.Close();

                success = true;
            }
            catch {
                success = false;
            }
            return success;
        }

        [WebMethod]
        public List<string> ProcitajSveValute() {
            List<string> linije = GetLines("valute.txt");

            List<string> ValuteIzFajla = new List<string>();

            for (int i = 0; i < linije.Count; i++) {
                string linija = linije[i];
                string valuta = linija.Split('|')[1];
                valuta = valuta.Trim();
                ValuteIzFajla.Add(valuta);
            }

            List<string> ValuteKraj = ValuteIzFajla.Distinct().ToList();
            return ValuteKraj;
             //        try
    //        {
    //            if (!IsPostBack)
    //            {
    //                Service1 servis = new Service1();
    //                List<string> lista = servis.ProcitajSveValute().ToList<string>();
    //                for (int i = 0; i < lista.Count(); i++)
    //                {
    //                    DropDownList1.Items.Add(lista[i]);
    //                }

    //            }
    //        }
    //        catch (Exception ex)
    //        {
    //            Response.Write(ex.Message);
    //        }
    //    }

    //    protected void Button1_Click(object sender, EventArgs e)
    //    {
    //        try
    //        {
    //            Service1 servis = new Service1();
    //            DateTime datum = Calendar1.SelectedDate;
    //            string valuta = DropDownList1.SelectedItem.ToString();
    //            double kurs = Convert.ToDouble(TextBox1.Text);
    //            bool nesto = servis.UpisiKursNaDan(datum, valuta, kurs);
    //        }
    //        catch (Exception ex)
    //        {
    //            Response.Write(ex.Message);
    //        }
    //        TextBox1.Text = " ";
        }
    }
}
        //    try
        //    {
        //        if (!IsPostBack)
        //        {
        //            Service1 servis = new Service1();
        //            List<string> lista = servis.ProcitajSveValute().ToList<string>();
        //            for (int i = 0; i < lista.Count(); i++)
        //            {
        //                DropDownList1.Items.Add(lista[i]);
        //            }

        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        Response.Write(ex.Message);
        //    }
        //}

        //protected void Button1_Click(object sender, EventArgs e)
        //{
        //    try
        //    {
        //        Service1 servis = new Service1();
        //        DateTime datum = Calendar1.SelectedDate;
        //        string valuta = DropDownList1.SelectedItem.ToString();
        //        double kurs = servis.ProcitajKursNaDan(datum, valuta);
        //        Label1.Text = kurs.ToString();
        //        if (kurs == 0)
        //        {
        //            Label1.Text = "Ne postoji kursna lista za tu valutu na taj datum!";
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        Response.Write(ex.Message);
        //    }
        //}
...