ローカルマシンでASP.NET C#コンソールアプリケーションやWebサービスのようなものを開発しなければなりません。 私は遠くにあるサーバーにウェブサイトを持っています。私はプリンタに接続されているローカルマシンも持っています。 タスクは以下の通りです。誰かがテキストボックスでウェブサイトにデータを入れ、適切なプリンタを選択して印刷を押します(したがって、Webサイトには、ローカルマシンに接続されている利用可能なプリンタの現在のリストが必要です)。ローカルマシンはデータを取得して出力し、確認を返します。ウェブAPIを使用してウェブサイトとローカルコンソールアプリケーションの間で通信する
私はウェブサイトとコンソールアプリケーションの間で通信するためにWeb APIを使用しています。
これは、Web APIは、今どのように見えるかです:
public class LabelController : UmbracoApiController
{
Label[] labels = new Label[]
{
new Label { Product="Black Top", Location="T1", VariantSKU="1111" }
};
[HttpGet]
[ActionName("SendLabel")]
public Label SendLabel(Label currentLabel)
{
Label lbl = currentLabel;
return lbl;
}
[HttpGet]
[ActionName("SendAllLabels")]
public IEnumerable<Label> SendAllLabels()
{
return labels;
}
[HttpPost]
[ActionName("GetPrinters")]
public void GetPrinters([FromBody]string value)
{
//Here I should get the list of printers from the local machine
}
}
これは私がローカルマシンにラベルを送信するためにウェブサイトから呼び出そうとする方法である:
Label printlabel = new Label { Product = "Awesome T-Shirt", Location = "T1", VariantSKU = "0000000" };
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:49423/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var webapi = new LabelController();
webapi.SendLabel(printlabel);
}
そして、これはありますコンソールアプリケーションでWeb APIをどのように使用するのですか。
public class Label
{
public string Product { get; set; }
public string Location { get; set; }
public string VariantSKU { get; set; }
}
class Program
{
static HttpClient client = new HttpClient();
static void Main(string[] args)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:49423/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
PrintData();
PrinterList();
}
}
static void PrintData()
{
try
{
HttpResponseMessage resp = client.GetAsync("umbraco/api/Label/SendLabel").Result;
resp.EnsureSuccessStatusCode();
var label = resp.Content.ReadAsAsync<Label>().Result;
Console.WriteLine(label.Product);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
private static async void PrinterList()
{
var printerQuery = new ManagementObjectSearcher("SELECT * from Win32_Printer");
foreach (var printer in printerQuery.Get())
{
var name = printer.GetPropertyValue("Name");
var status = printer.GetPropertyValue("Status");
var isDefault = printer.GetPropertyValue("Default");
var isNetworkPrinter = printer.GetPropertyValue("Network");
// Here I should send the parameters back to the website
}
}
}
私の問題は、私のラベルt o SendLabelアクションと私は、コンソールアプリケーションからウェブサイトにデータを送信する方法を知らない。
ありがとうございます!
こんにちはを使用して、ユーザーにメッセージを送信見つけた場合