CURLを使用するvultr.com APIを使用しようとしています。私はいくつかの異なる呼び出しでAPI呼び出しを正常に完了しましたが、特に動作しません。 API https://www.vultr.com/api/に関するドキュメントは次のとおりです。CURLに似たC#API POST
サーバ/作成とファイアウォール/ rule_createをほぼ同じコードで正しく動作させることができましたが、server/rebootコマンドでは機能しません。ここに私はうまく機能しているAPIのポストのコードです。
public static void AddIpToFirewall(string ip,string fireWallGroupId)
{
string Data = "FIREWALLGROUPID=" + fireWallGroupId + "&direction=in&ip_type=v4&protocol=tcp&subnet=" + ip + "&subnet_size=32&port=80";
string Reponse = String.Empty;
StreamWriter Sw = null;
StreamReader Sr = null;
try
{
HttpWebRequest Req = (HttpWebRequest)WebRequest.Create("https://api.vultr.com/v1/firewall/rule_create");
Req.Method = "POST";
Req.ContentType = "application/x-www-form-urlencoded";
Req.ContentLength = Data.Length;
Req.Headers.Add(ApiKey);
using (var sw = new StreamWriter(Req.GetRequestStream()))
{
sw.Write(Data);
}
Sr = new
StreamReader(((HttpWebResponse)Req.GetResponse()).GetResponseStream());
Reponse = Sr.ReadToEnd();
Sr.Close();
}
catch (Exception ex)
{
if (Sw != null)
Sw.Close();
if (Sr != null)
Sr.Close();
Console.WriteLine(ex.Message + "\r\n\r\n'error with vultr...");
}
}
ここでは動作しないコードを示します。ファイアウォールのPOSTコマンドとほとんど同じです。
public static void RebootCommand(string subId)
{
string Data = "SUBID=" + subId;
string Reponse = String.Empty;
StreamWriter Sw = null;
StreamReader Sr = null;
try
{
HttpWebRequest Req = (HttpWebRequest)WebRequest.Create("https://api.vultr.com/v1/server/reboot");
Req.Method = "POST";
Req.ContentType = "application/x-www-form-urlencoded";
Req.ContentLength = Data.Length;
Req.Headers.Add(ApiKey);
using (var sw = new StreamWriter(Req.GetRequestStream()))
{
sw.Write(Data);
}
Sr = new
StreamReader(((HttpWebResponse)Req.GetResponse()).GetResponseStream());
Reponse = Sr.ReadToEnd();
Sr.Close();
}
catch (Exception ex)
{
if (Sw != null)
Sw.Close();
if (Sr != null)
Sr.Close();
Console.WriteLine(ex.Message + " error with vultr...");
}
}
エラーは発生しませんが、VMの再起動に失敗します。彼らのサポートに連絡したところ、彼らは再起動コマンドが問題なく動作していると言います。前にこの問題があった人はいますか?ありがとう。
これは実行時にコンソールに何か書き込まれますか? – mjwills
'subId'の** exact **値は何ですか?また、ドキュメンテーションでは、APIキーは必須だと主張していますが、あなたのコードはそれを設定していないようです。 https://www.vultr.com/api/ – mjwills
VMが再起動していないことをどのように確認しますか? VMの状態を確認しましたか?再起動には数分の1秒で完了しない時間がかかるかもしれません。 –