我正在使用StreamReader使用来自Web响应的数据填充字符串。这很好用,可以在课堂内访问。 (WebResponseEventArgs)当我尝试在别处访问它时,它返回一个空字符串。不为空,只是一个空字符串。
WebResponseEventArgs类:
public class WebResponseEventArgs : EventArgs
{
public WebAsync WebAsyncObject;
public string ErrorMessage;
public JArray ValidationErrors;
public JArray Data;
public string ResponseString;
public string Test;
public StreamReader reader;
public WebResponseEventArgs(WebAsync webAsync)
{
Test = "Hello!";
WebAsyncObject = webAsync;
Stream responseStream = WebAsyncObject.requestState.webResponse.GetResponseStream ();
reader = new StreamReader (responseStream);
ResponseString = reader.ReadToEnd ();
if(ResponseString != "")
{
try {
Debug.Log (ResponseString);
Data = JArray.Parse (ResponseString);
}
catch(JsonReaderException e)
{
Data = JArray.Parse ("[" + ResponseString + "]");
}
if(Data.Contains ("errors"))
{
ValidationErrors = (JArray) Data["errors"];
}
Debug.Log (Data[1]);
}
}
public bool HasErrors()
{
if(ErrorMessage != null)
{
return true;
}
else return false;
}
}
正如您所看到的,我正在调试器中记录字符串,它向我显示完整的响应字符串,验证它在此类中是否正常工作。但是,当从其他任何地方调用变量时,它返回一个空字符串。我花了两个小时谷歌搜索,并希望其他人之前偶然发现了这个问题,但我找不到任何东西。
以下是尝试访问字符串的事件处理程序:
public void OnGetAllResource(WebResponseEventArgs e)
{
//Check for errors
if(e.HasErrors())
{
Debug.Log (e.ErrorMessage);
return;
}
//Debug.Log (r);
//Test our resource inherited class
else
{
//string string2 = Shift.Instance.getAll ();
//string string3 = Shift.Instance.getAll ();
//Start composing our list
Debug.Log (e.Test);
Debug.Log (e.ResponseString);
Debug.Log(e.Test)工作正常,Debug.Log(e.ResponseString)返回一个空字符串。
我希望有人可以帮助我,这让我头疼不已:)