【发布时间】:2014-04-29 01:03:42
【问题描述】:
我的问题是,当我使用新的 webclient 向 WebService 发送 url 时,它要求我登录,在搜索了这个问题后,我发现你需要保存 cookie,但它对我不起作用。
根据您的要求,这是完整代码
namespace PhoneApp8
{
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
// Sample code to localize the ApplicationBar
//BuildLocalizedApplicationBar();
}
public class OuterRootObject
{
public string d { get; set; }
}
public class Globals
{
public bool MultiSessionsAllowed { get; set; }
public int CommCalcType { get; set; }
public int PriceChangedTimer { get; set; }
public int ValidLotsLocation { get; set; }
public bool CustumizeTradeMsg { get; set; }
public object FirstWhiteLabeledOffice { get; set; }
public int DealerTreePriv { get; set; }
public int ClientConnectTimer { get; set; }
public int ClientTimeoutTimer { get; set; }
public double DefaultLots { get; set; }
public string WebSecurityID { get; set; }
public int ServerGMT { get; set; }
}
public class VersionInfo
{
public int Rel { get; set; }
public int Ver { get; set; }
public int Patch { get; set; }
public int ForceUpdate { get; set; }
public int UpdateType { get; set; }
public Globals Globals { get; set; }
}
public class SystemLockInfo
{
public int MinutesRemaining { get; set; }
public int HoursRemaining { get; set; }
public int DaysRemaining { get; set; }
public int Maintanance { get; set; }
public int WillBeLocked { get; set; }
}
public class RootObject
{
public string sessionid { get; set; }
public VersionInfo VersionInfo { get; set; }
public SystemLockInfo SystemLockInfo { get; set; }
public string FirstWhiteLabel { get; set; }
public string WLID { get; set; }
public bool CheckWhiteLabel { get; set; }
public string Password { get; set; }
public string Username { get; set; }
public DateTime LastTickTime { get; set; }
public int SelectedAccount { get; set; }
public int Name { get; set; }
public object ServicePath { get; set; }
public string GWSessionID { get; set; }
public string IP { get; set; }
public string SessionDateStart { get; set; }
public string CompanyName { get; set; }
public string UserId { get; set; }
public string DemoClient { get; set; }
public string FName { get; set; }
public string SName { get; set; }
public string TName { get; set; }
public string LName { get; set; }
public object Sms { get; set; }
public string isReadOnly { get; set; }
public string SchSms { get; set; }
public string AlertSms { get; set; }
public object Temp { get; set; }
public string GMTOffset { get; set; }
public string SvrGMT { get; set; }
public object ClientType { get; set; }
public string EnableNews { get; set; }
public string PublicSlideNews { get; set; }
public string PrivateSlideNews { get; set; }
public int DealerTreePriv { get; set; }
}
private void Button_Click(object sender, RoutedEventArgs e)
{
string baseuri = "http://IP in the comment/vertexweb10/webservice.svc/login?username=%22user15650%22&password=%22898k%22";
CookieAwareWebClient wc = new CookieAwareWebClient();
wc.DownloadStringCompleted += ParseProducts_AsJson;
Uri uri = new Uri(baseuri);
wc.DownloadStringAsync(uri);
}
private void ParseProducts_AsJson(object sender, DownloadStringCompletedEventArgs e)
{
string raw = e.Result;
string webResponse = e.Result;
MessageBox.Show(webResponse as string);
var outerRoot = JsonConvert.DeserializeObject<OuterRootObject>(webResponse);
var root = JsonConvert.DeserializeObject<RootObject>(outerRoot.d);
MessageBox.Show("hello " + root.Username + " " + root.UserId + " " + root.sessionid);
var UserIdVal= Convert.ToInt16 (root.UserId);
if (UserIdVal == -1 || UserIdVal == -207)
MessageBox.Show("Invalid username or password");
else if (UserIdVal == -231)
{
MessageBox.Show("You must have at least one account");
}
else if (webResponse == null || webResponse == "" || UserIdVal < 0)
{
MessageBox.Show("Error while login.Please try later");
}
else if (UserIdVal > 0)
{
string baseuri1 = "http://IP in the comment/vertexweb10/webservice.svc/getallsymbols?AccountID=1122336675";
CookieAwareWebClient wc1 = new CookieAwareWebClient();
wc1.DownloadStringCompleted += ParseProducts_AsJson1;
Uri uri1 = new Uri(baseuri1);
wc1.DownloadStringAsync(uri1);
MessageBox.Show("You have loged in");
NavigationService.Navigate(new Uri("/page2.xaml", UriKind.Relative));
}
else
{
MessageBox.Show("Invalid username or password");
}
}
private void ParseProducts_AsJson1(object sender, DownloadStringCompletedEventArgs e)
{
string raw1 = e.Result;
string webResponse1 = e.Result;
MessageBox.Show(webResponse1 as string);
}
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
}
class CookieAwareWebClient : WebClient
{
[System.Security.SecuritySafeCritical]
private CookieContainer cookie;
public CookieContainer Cookie { get { return cookie; } }
public CookieAwareWebClient()
{
cookie = new CookieContainer();
}
public CookieAwareWebClient(CookieContainer givenContainer)
{
cookie = givenContainer;
}
}
}
}
我认为错误出在 cookie 容器中,这是我使用的最后一个 cookieaware(我已经尝试了 10 多个 cookie 容器代码)
【问题讨论】:
-
任何帮助,我需要解决它:(
-
我在这里发布了完整的代码,ip 是 74.54.46.178,请帮我做这个
-
请帮帮我,我的问题没有解决办法。
标签: c# windows-phone-7 cookies windows-phone-8