首先,吐槽一下金数据的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. Android开发实例之多点触控程序

    智能终端设备的多点触控操作为我们带来了种种炫酷体验,这也使得很多Android开发者都对多点触控程序的开发感兴趣.实际上多点触控程序的实现并不是那么遥不可及,而是比较容易.本文就主要通过一个实例具体讲 ...

  2. hibernate uniqueResult方法

    假设查询返回多个值用list()方法 public void testQuery(){ Configuration config = new Configuration().configure(); ...

  3. qt helper

    qt帮助文档(中文版) http://www.kuqin.com/qtdocument/index.html qt基础 http://www.devbean.net/2012/08/qt-study- ...

  4. Debian 6配置GNOME桌面环境

      1.安装xorgroot@debian:~# apt-get install xorg 2.安装gdm(GNOME Display Manager)root@debian:~# apt-get i ...

  5. mysql distinct跟group by性能

    mysql distinct和group by性能   1,测试前的准备 //准备一张测试表 mysql> CREATE TABLE `test_test` ( ->   `id` int ...

  6. Asp.Net 之 缓存机制

    asp.net缓存有三种:页面缓存,数据源缓存,数据缓存. 一.页面缓存 原理:页面缓存是最常用的缓存方式,原理是用户第一次访问的时候asp.net服务器把动态生成的页面存到内存里,之后一段时间再有用 ...

  7. oracle删除表语句

    删除表(记录和结构)的语名delete   ————   truncate      ———— drop DELETE (删除数据表里记录的语句) DELETE FROM表名 WHERE 条件; 注意 ...

  8. java 获取本机ip地址

    /** * 取当前系统站点本地地址 linux下 和 window下可用 * * @return */ public static String getLocalIP() { String sIP = ...

  9. swift 定义类方法(type methed)

    swift   中声明结构体或者枚举的类型方法,需要在func前加上关键字 ststic  ,但是如果要定义一个类的类方法时,需要用关键字 class class SomeClass { class ...

  10. Centos 6.4 python 2.6 升级到 3.5.2

    查看python的版本 #python -V Python 1.下载Python-2.5.2 #wget https://www.python.org/ftp/python/3.5.2/Python- ...