首先,吐槽一下金数据的API文档 http://help.jinshuju.net/articles/api-intro.html写的很粗糙啊...反正我是没太看明白

拿表单api举例,只告诉你了个地址https://jinshuju.net/api/v1/forms/ex27t2,然后呢,然后没有了,估计大家也能猜到ex27t2应该是变化的,但是填什么呢...

这里应该填你表单的一个值,好像只有在这种地方有这个值,其他地方我没发现..

而且提交咨询工单也没用,给我回的邮件仅回复了“我们目前不提供这类技术支持。若有其他问题请继续提交工单。如果您还有问题,可以查看我们的帮助中心。欢迎关注金数据官方微信(金数据服务号/jinshuju-service)。”

自己动手,丰衣足食吧...

好了,不多说其他的了,直接上代码

public class JinShuJu
{
private static string Key = "9hh6fIbLOqDrgin4Q_r6X";
private static string Secret = "z3RSib8HeQBfau6zwRpRo"; /// <summary>
/// 获取表单API
/// </summary>
/// <returns></returns>
public static string GetFromAPI()
{
string uri = "https://jinshuju.net/api/v1/forms/RsE5EC";
string result = string.Empty;
WebRequest request = WebRequest.Create(new Uri(uri)); request.Credentials = GetCredentialCache(uri, Key, Secret);
request.Headers.Add("Authorization", GetAuthorization(Key, Secret)); request.Timeout = ;
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader sr = new StreamReader(stream);
result = sr.ReadToEnd();
sr.Close();
stream.Close(); return result;
} /// <summary>
/// 提交数据API
/// </summary>
/// <param name="JSONData"></param>
/// <returns></returns>
public static string PostFromAPI(string JSONData)
{
string uri = "https://jinshuju.net/api/v1/forms/RsE5EC";
string result = string.Empty;
WebRequest request = WebRequest.Create(new Uri(uri)); request.Credentials = GetCredentialCache(uri, Key, Secret);
request.Headers.Add("Authorization", GetAuthorization(Key, Secret)); request.Timeout = ; byte[] bytes = Encoding.UTF8.GetBytes(JSONData);
request.Method = "POST";
request.ContentType = "application/json";
string paraUrlCoded = JSONData;
byte[] payload;
payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
request.ContentLength = payload.Length;
Stream writer = request.GetRequestStream();
writer.Write(payload, , payload.Length);
writer.Close(); WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader sr = new StreamReader(stream);
result = sr.ReadToEnd();
sr.Close();
stream.Close(); return result;
} #region # 生成 Http Basic 访问凭证 #
private static CredentialCache GetCredentialCache(string uri, string username, string password)
{
string authorization = string.Format("{0}:{1}", username, password);
CredentialCache credCache = new CredentialCache();
credCache.Add(new Uri(uri), "Basic", new NetworkCredential(username, password));
return credCache;
}
private static string GetAuthorization(string username, string password)
{
string authorization = string.Format("{0}:{1}", username, password);
return "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(authorization));
}
#endregion
}

最后,还得吐槽下金数据数据API,明明说好了,要是如果不满足校验条件(必填/重复等),金数据会返回400,并给出提示。

但是!并没有提示,只是会返回400 Bad Request!害得我搞了半天才明白,以为是页面请求不存在了或者其他请求错误了,因为说好的提示并没有给出来..

C#调用金数据API的更多相关文章

  1. 全国天气预报信息数据 API 功能简介与代码调用实战视频

    此文章对开放数据接口 API 之「全国天气预报信息数据 API」进行了功能介绍.使用场景介绍以及调用方法的说明,供用户在使用数据接口时参考之用,并对实战开发进行了视频演示. 1. 产品功能 接口开放了 ...

  2. Python 调用阿里云 API 收集 ECS 数据

    #!/usr/bin/env python # coding: utf-8 # author: Wang XiaoQiang ''' 功能介绍: 1.调用阿里云API,收集所有区域 ECS 信息 2. ...

  3. 全国天气预报数据API调用PHP示例

    本代码示例是基于PHP的聚合数据全国天气预报API服务请求的代码样例,使用前你需要: ①:通过https://www.juhe.cn/docs/api/id/39 申请一个天气预报API的appkey ...

  4. scrapy爬虫框架调用百度地图api数据存入数据库

    scrapy安装配置不在本文 提及, 1.在开始爬取之前,必须创建一个新的Scrapy项目.进入自定义的项目目录中,运行下列命令 scrapy startproject mySpider 其中, my ...

  5. 调用第三方物流公司API即时查询物流信息

    主要是利用快递鸟提供的物流服务,通过对接快递鸟的API,调用即时查询接口,获取物流信息. 这里采用java语言,调用快递鸟的接口为例.步骤如下: 1.首先,得去快递鸟的官方网站注册一个账号并进行实名认 ...

  6. C#调用百度地图 api

    转  http://blog.csdn.net/kkkkkxiaofei/article/details/8663377 这一篇,记录一下我调用的地图API实现的功能.下面介绍的都是一些片段的节选,不 ...

  7. 关于c#调用java中间件api的几个问题

    由于项目需要,做的c#客户端数据库连接串首先肯定不能写死的程序里(数据库很容易被攻击,我们的项目半年改了几次密码...) 放置在配置文件内,都可以看得到,最开始想法将配置文件加密,老师说加密过的文件还 ...

  8. C#中可直接调用WIN32的API函数--USER32.DLL

    Win32的API函数可以直接在C#中直接调用,在做WinForm时还是很有帮助的.有时候直接调用Win32的API,可以很高效的实现想要的效果. using System; using System ...

  9. mfc 调用Windows的API函数实现同步异步串口通信(源码)

    在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信方便易行,应用广泛. 一般情况下,工控机和各智能仪表通过RS485总线进行通信.RS485的通信方式是半 ...

随机推荐

  1. Codeforces Round #324 (Div. 2) E. Anton and Ira 贪心

    E. Anton and Ira Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/584/probl ...

  2. isstream例子

    假如有一个文件,列出了一些人和他们的电话号码.某些人只有一个号码,而另外一些人则有多个——家庭电话.工作电话.移动电话等.我们的输入文件看起来是这样的: morgan 2015552368 86255 ...

  3. CSS 之 清除 float 常用的方法

    大多数前端使用.clearfix:after{ .....}  和 .clearit{....}的组合来清除浮动. 前端开发经常用到浮动 float:left; float:right; 有浮动就需要 ...

  4. boot2docker安装及使用

    更新homebrew 为了确保有boot2docker的安装脚本 brew update 安装boot2docker brew install boot2docker 初始化 boot2docker ...

  5. Objective-C /iphone开发基础:分类(category,又称类别)

    在c++中我们可以多继承来实现代码复用和封装使程序更加简练.在objective-c中只能单继承,不能多继承,那么除了协议protocol之外,我们可以实现类似多继承的一个方法就是,分类(catego ...

  6. Android 自学之列表选择框Spinner

    列表选择框(Spinner)与Swing编程里面的Spinner不同,这里的Spinner其实就是一个列表选项框. Spinner是ViewGroup的间接子类,因此他也可作为容器使用. Spinne ...

  7. Windows下性能最好的I/O模型——完成端口

    I/O模型--完成端口 设计目的: 常见的网络通信分为两种:同步和异步. 在同步通信中,每一次接受数据都会导致主线程的挂起,从而阻塞住了其他操作.为了解决这一问题,我们通常会采取同步通信+多线程的策略 ...

  8. 浅谈用java解析xml文档(四)

    继续接上一文,这一阵子因为公司项目加紧,导致最后一个解析xml文档的方式,还没有总结,下面总结使用dom4J解析xml. DOM4J(Document Object Model for Java) 使 ...

  9. .NET学习笔记(2) — IIS服务器环境搭建

    目录 一:开启Windows系统自带的IIS服务器方法 二:备注 三:常见问题     一:开启Windows系统自带的IIS服务器方法   第一步:安装IIS,控制面板->程序和功能-> ...

  10. Dojo Tree设置默认选中项并且获得它

    先上用来生成Tree的JSON数据 [    { "id": "Root", "name": "资源目录" },    ...