我知道標題問題並非唯一且大量的消息可用。我打開一個主題的原因是,我真的很難根據我的項目來了解這個問題。在表單/類別之間共享信息
最近我試圖啓動一個WinForm從一個REST API獲取值。
正如在Form1上開始測試一旦點擊metroButton1我應該得到一個SessionToken到metroTextBox1.Text,其中工程。
當我掙扎是使用輸出作爲getvirtualmachine類的輸入。
一旦在課堂上使用Form1.connect()來獲得SessionToken,我'得到以下錯誤:
An object reference is required for the non-static field, method, or property 'Form1.connect()'
不知道我怎麼能有這樣的在全球範圍內使用它作爲輸入了幾類。猜測我在某處/某個地方犯了一個大錯。
FORM1
public partial class Form1 : MetroFramework.Forms.MetroForm
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{ }
public string connect()
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:35113/api/sessions/start");
httpWebRequest.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(metroTextBox3.Text + ":" + metroTextBox4.Text));
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = JsonConvert.SerializeObject(new
{
ServerPort = "35107",
Username = metroTextBox3.Text,
Password = metroTextBox4.Text,
Domain = metroTextBox5.Text
});
streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
dynamic item = Newtonsoft.Json.JsonConvert.DeserializeObject(result);
return (string)item.Data;
}
}
public void metroButton1_Click(object sender, EventArgs e)
{
metroTextBox1.Text = connect();
}
GetVirtualMachines類
public class GetVirtualMachines
{
public string gVM()
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:35113/api/vms/list/");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "GET";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = JsonConvert.SerializeObject(new
{
SessionToken = Form1.connect(),
});
streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
dynamic item = Newtonsoft.Json.JsonConvert.DeserializeObject(result);
return item;
}
}
}
Ups。似乎我的問候沒有添加到帖子。 「你好專家」算賬;) – Max