- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Harvest是我在工作中使用的时间跟踪应用程序。虽然 Web UI 非常简单,但我想添加一些自定义功能。我注意到他们有一个 API ...所以我想用 C# 为它制作一个自定义桌面客户端。
只看页面,信息量不大。您可以找到的 C# 示例(在进行一些挖掘之后)也无济于事。那么...究竟如何将 API 与 C# 结合使用?
任何帮助将不胜感激:)
最佳答案
Harvest 正在使用 REST API ,那么您所做的就是对服务器上的网址执行获取/放置/发布请求,它将返回结果(通常采用 XML 或 JSON(在本例中显示为 XML)的格式)。快速谷歌搜索返回 this tutorial关于如何使用 REST API,希望这足以满足您的需求。如果没有,请随时向我们询问您在使用 REST 和 C# 时遇到的具体问题
在这里,我将尝试向他们的样本中添加更多评论:
using System;
using System.Net;
using System.IO;
using System.Text;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;
class HarvestSample
{
//This is used to validate the certificate the server gives you,
//it allays assumes the cert is valid.
public static bool Validator (object sender, X509Certificate certificate,
X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
return true;
}
static void Main(string[] args)
{
//setting up the initial request.
HttpWebRequest request;
HttpWebResponse response = null;
StreamReader reader;
StringBuilder sbSource;
//1. Set some variables specific to your account.
//This is the URL that you will be doing your REST call against.
//Think of it as a function in normal library.
string uri = "https://yoursubdomain.harvestapp.com/projects";
string username="youremail@somewhere.com";
string password="yourharvestpassword";
string usernamePassword = username + ":" + password;
//This checks the SSL cert that the server will give us,
//the function is above this one.
ServicePointManager.ServerCertificateValidationCallback = Validator;
try
{
//more setup of the connection
request = WebRequest.Create(uri) as HttpWebRequest;
request.MaximumAutomaticRedirections = 1;
request.AllowAutoRedirect = true;
//2. It's important that both the Accept and ContentType headers
//are set in order for this to be interpreted as an API request.
request.Accept = "application/xml";
request.ContentType = "application/xml";
request.UserAgent = "harvest_api_sample.cs";
//3. Add the Basic Authentication header with username/password string.
request.Headers.Add("Authorization", "Basic " + Convert.
ToBase64String(new ASCIIEncoding().GetBytes(usernamePassword)));
//actually perform the GET request
using (response = request.GetResponse() as HttpWebResponse)
{
//Parse out the XML it returned.
if (request.HaveResponse == true && response != null)
{
reader = new StreamReader(response.GetResponseStream(),
Encoding.UTF8);
sbSource = new StringBuilder(reader.ReadToEnd());
//4. Print out the XML of all projects for this account.
Console.WriteLine(sbSource.ToString());
}
}
}
catch (WebException wex)
{
if (wex.Response != null)
{
using (HttpWebResponse errorResponse = (HttpWebResponse)wex.Response)
{
Console.WriteLine(
"The server returned '{0}' with the status code {1} ({2:d}).",
errorResponse.StatusDescription, errorResponse.StatusCode,
errorResponse.StatusCode);
}
}
else
{
Console.WriteLine( wex);
}
}
finally
{
if (response != null) { response.Close(); }
}
}
}
关于c# - 收获(时间卡应用程序)API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5821808/
Harvest是我在工作中使用的时间跟踪应用程序。虽然 Web UI 非常简单,但我想添加一些自定义功能。我注意到他们有一个 API ...所以我想用 C# 为它制作一个自定义桌面客户端。 只看页面,
是否有人拥有或可以分享 SQL 查询的链接,该链接允许我从 WordPress 数据库的用户表中提取所有电子邮件地址? 最佳答案 这是一个非常简单的表格(请参阅官方引用资料 here ): SELEC
我正在尝试预测温室中 cucumber 的收成。我测量了有关湿度、温度、人造光、阳光和二氧化碳的数据。每天收获的 cucumber 数量以千克为单位。 由于 cucumber 大约需要 14 天才能生
简介 作为一名开发人员,我每天都参与编写大量数学代码,我想向 C# 语言添加很少的语法糖以简化代码编写和审查。 我已经读过这个 thread还有这个one对于可能的解决方案,只想知道最好的方向是什么,
我正在使用网络收获来废弃一些电子商务网站。我正在迭代搜索页面并在输出 xml 中获取每个产品的详细信息。但现在我想在抓取时在 anchor (a)标记中使用正则表达式并获取特定的字符串,即, let
https://github.com/okfn/ckanext-harvest/blob/release-v2.0/README.rst#the-ckan-harvester提到您可以指定“defau
我是一名优秀的程序员,十分优秀!