I'm still getting the same error. Would it help to see the service code
itself? I'm pasting it below in case someone can decipher. Thanks.
using System;
using System.IO;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.Text.RegularExpressions;
using System.Web.Services;
using System.Net;
using System.Web;
/// <summary>
/// Summary description for StockServices.
/// </summary>
[WebService (Namespace="
http://enterprise.intranet.com")]
public class StockServices : System.Web.Services.WebService
{
WebProxy myProxy;
public StockServices()
{
InitializeComponent();
}
#region Component Designer generated code
//Required by the Web Services Designer
private IContainer components = null;
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if(disposing && components != null)
{
components.Dispose();
}
base.Dispose(disposing); }
#endregion
[WebMethod]
public string GetQuote(string ticker)
{
string stockURL, page, retval;
try
{
stockURL = GetURL(ticker);
page = GetPageContent(stockURL);
retval = ParsePage(page);
}
catch (ArgumentOutOfRangeException)
{
retval = "Invalid Ticker!";
}
catch (Exception)
{
retval = "Unknown Error";
}
return retval;
}
[WebMethod]
public DataSet GetQuotes(string tickers)
{
char[] splitter = {' '};
string[] _tickers = tickers.Trim().Split(splitter);
Int32 i, ticks;
ticks = _tickers.Length;
DataSet ds = new DataSet();
DataTable dt = new DataTable("StockData");
DataColumn dc;
dc = dt.Columns.Add("Ticker",System.Type.GetType("System.String"));
dc = dt.Columns.Add("Price",System.Type.GetType("System.String"));
for (i = 0; i < ticks; i++)
{
DataRow dr = dt.NewRow();
dr["Ticker"] = _tickers
.ToUpper();
dr["Price"] = GetQuote(_tickers);
dt.Rows.Add(dr);
}
ds.Tables.Add(dt);
return ds;
}
public void SetProxy()
{
myProxy = new WebProxy("000.000.000.000", 80);
myProxy.Credentials = new NetworkCredential("sysid", "syspw");
}
private string GetURL(string ticker)
{
StringBuilder url = new StringBuilder();
url.Append("http://finance.yahoo.com/q/ecn?s=");
url.Append(ticker);
return url.ToString();
}
private string ParsePage(string page)
{
Int32 i;
i = page.IndexOf("Last Trade:");
page = page.Substring(i);
i = page.IndexOf("<b>");
page = page.Substring(i);
i = page.IndexOf("</b>");
page = page.Substring(0,i);
page = Regex.Replace(page,"<b>","");
return page;
}
public string GetPageContent(string url)
{
WebRequest wreq;
WebResponse wres;
StreamReader sr;
String content;
wreq = (HttpWebRequest)WebRequest.Create(url);
SetProxy();
wreq.Proxy = myProxy;
wreq.Credentials = myProxy.Credentials;
// make the HTTP call
wres = (HttpWebResponse)wreq.GetResponse();
sr = new StreamReader(wres.GetResponseStream());
content = sr.ReadToEnd();
sr.Close();
return content;
}
}
I meant.
pr was an instance of WebProxy used in our production code.
Andy