私はのHttpRequest経由hololensメガネと通信するデスクトップ・アプリケーションで作業(hololensは、USBを介して接続されている)、特に、私は、ファイルを読み書きしたいです。これを行うには、私は次のコードを使用し、それを実行するには転送ファイル(エラー429)
class BuildDeployPortal
{
// Consts
public static readonly string API_FileQuery = @"http://{0}/api/filesystem/apps/file";
// Classes & Structs
public struct ConnectInfo
{
public ConnectInfo(string ip, string user, string password)
{
IP = ip;
User = user;
Password = password;
}
public string IP;
public string User;
public string Password;
}
public async static void GetFile(ConnectInfo connectInfo, string knownfolderid, string filename, string packagefullname, string path)
{
try
{
// Query
string query = string.Format(API_FileQuery, connectInfo.IP);
query += "?knownfolderid=" + Uri.EscapeUriString(knownfolderid);
query += "&filename=" + Uri.EscapeUriString(filename);
query += "&packagefullname=" + Uri.EscapeUriString(packagefullname);
query += "&path=" + Uri.EscapeUriString(path);
// Create http request
var httpRequest = new HttpClient();
httpRequest.DefaultRequestHeaders.Clear();
httpRequest.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic",
EncodeTo64(connectInfo.User + ":" + connectInfo.Password));
HttpResponseMessage resp = await httpRequest.GetAsync(query);
byte[] responseMessage = await resp.Content.ReadAsByteArrayAsync();
}
catch (Exception ex)
{
//log some problems
}
}
public async static void UploadFile(ConnectInfo connectInfo, string knownfolderid, string packagefullname, string path, string filePath)
{
try
{
// Query
string query = string.Format(API_FileQuery, connectInfo.IP);
query += "?knownfolderid=" + Uri.EscapeUriString(knownfolderid);
query += "&packagefullname=" + Uri.EscapeUriString(packagefullname);
query += "&path=" + Uri.EscapeUriString(path);
// Create http request
var httpRequest = new HttpClient();
httpRequest.DefaultRequestHeaders.Clear();
httpRequest.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic",
EncodeTo64(connectInfo.User + ":" + connectInfo.Password));
byte[] data = File.ReadAllBytes(filePath);
ByteArrayContent byteContent = new ByteArrayContent(data);
HttpResponseMessage resp = await httpRequest.PostAsync(query, byteContent);
var responseMessage = await resp.Content.ReadAsStringAsync();
}
catch (Exception ex)
{
//log some problems
}
}
// Helpers
private static string EncodeTo64(string toEncode)
{
byte[] toEncodeAsBytes = Encoding.ASCII.GetBytes(toEncode);
string returnValue = Convert.ToBase64String(toEncodeAsBytes);
return returnValue;
}
}
を私はGETFILEメソッドが正常に動作し、私がしたいファイルを与えるが、UploadFileメソッドは私に次のような応答を与え
BuildDeployPortal.ConnectInfo co = new BuildDeployPortal.ConnectInfo("127.0.0.1:10080", "user", "pass");
//get file
BuildDeployPortal.GetFile(co, "LocalAppData", "2017-01-25-09-04-21_TestFile.csv", "app_full_package_name", "\\LocalState");
//upload file
BuildDeployPortal.UploadFile(co, "LocalAppData", "app_full_package_name", "\\LocalState",
"C:\\Users\\myuser\\Desktop\\info.json");
を呼び出します:StatusCode:429、ReasonPhrase: 'Too Many Requests'。実行中にそのうちの1つだけを実行すると同じ結果になります。
なぜ私はこのエラーがあるのか分かりません。私はちょうど1つのリクエストを送信します(または何か不足しています)。
詳細については、REST APIの定義はthereです。 (このエラー429が表示される理由)
おかげ
私は同じことをしています。私はこのコード/質問をHoloLensフォーラムに複製しました:https://forums.hololens.com/discussion/8749/transfer-file-to-hololens-via-post-httprequest-error-429 - しかし見たことがないそこにも反応がある。私は本当にこれが解決されるホッピングしています。 –
opps、私はそれもあなたの投稿だと思う。私はそれよりも少し前にhttps://forums.hololens.com/discussion/8736/trying-to-upload-1-files-returns-429-too-many-requestsを出しています。答えが得られたら、ここに投稿してください。 - ありがとう。 –
申し訳ありませんがダン、私は答えがありません... –