簡體   English   中英

更改代碼以通過單擊按鈕運行將無法正常工作

[英]Changing the code to run by button click won't work

我正在使用來自http://nova.astrometry.net/的印版求解服務進行天文攝影項目

我找到了AstrometryNetClient(在這里: https : //github.com/elendil-software/AstrometryNetClient ),我設法通過一些代碼更改使它對我有效,並且很好用。

我的問題是,當我單擊按鈕將其更改為運行時,由於某種原因它不起作用!

它在此行停止: var res = client.Login();

我認為問題出在前一行: var client = new Client(apiKey); ,因為當我使用F11檢查代碼時,它顯示“ Connected = false”,這意味着登錄http://nova.astrometry.net/api/時出現錯誤

這是原始代碼:

using System;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
using software.elendil.AstrometryNet;
using software.elendil.AstrometryNet.Enum;
using software.elendil.AstrometryNet.Json;

namespace Test
{
  internal static class Program
  {
    private static void Main(string[] args)
    {
      const string apiKey = "astrometrynetapikey";
      const string file = "test.fit";
      try
      {
        var client = new Client(apiKey);
        var res = client.Login();
        Console.WriteLine("Login : " + res.status);
        CancellationTokenSource tokenSource = new 
 CancellationTokenSource();
        CancellationToken token = tokenSource.Token;

        var uploadArguments = new UploadArgs 
     {publicly_visible = Visibility.n};
        var uploadResponse = client.Upload(file, uploadArguments);

        Task<SubmissionStatusResponse> 
submissionStatusResponse = client.GetSubmissionStatus(uploadResponse.subid, token);
        Task<JobStatusResponse> jobStatusResponse = 
client.GetJobStatus(submissionStatusResponse.Result.jobs[0], token);

        if (jobStatusResponse.Result.status.Equals(ResponseJobStatus.success))
        {
          var calibrationResponse = client.GetCalibration(submissionStatusResponse.Result.jobs[0]);
          var objectsInFieldResponse = client.GetObjectsInField(submissionStatusResponse.Result.jobs[0]);

          Console.WriteLine("\nRA : " + calibrationResponse.ra);
          Console.WriteLine("Dec : " + calibrationResponse.dec);
          Console.WriteLine("radius : " + calibrationResponse.radius);
          Console.WriteLine("");
          foreach (string obj in objectsInFieldResponse.objects_in_field)
          {
            Console.WriteLine(obj);
          }
        }
        else
        {
          Console.WriteLine("Status : " + jobStatusResponse.Result.status);
        }
      }
      catch (Exception e)
      {
        Console.WriteLine(e.Message);
      }
      finally
      {
        Console.ReadKey();
      }
    }
  }
}

我想我已經找到了解決方案,似乎我需要安裝Newtonsoft.Json,現在工作正常。 感謝大家的支持!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM