(一)C#调用一言API并提取关键字

前言

由于最近在做一个项目需要上位机,因此就去学了下用C#编写上位机程序。一言网站提供了免费的一句话api,调用起来很方便。但由于本人没有系统的学习C#与网络知识,因此本文之讲述我所理解的部分,涉及到的一些方法可能比较麻烦,大家做个参考就好!

一、一言API

一言网址
一言提供了多种类型的句子,我们可以根据自己需求选取。
我们可以在请求链接后加上我们想要的参数进行获取。
例:https://v1.hitokoto.cn/?c=b
默认随机:https://v1.hitokoto.cn/
在这里插入图片描述

二、窗口基本设置

本工程示例只涉及到五个控件,分别为button、comboBox、label、textBox、webBrowser:
首先,我们添加button、textBox(设置为多行模式)、webBrowser这几个控件。
设置textBox多行模式
设置textBox多行模式
然后双击每一个控件,之后会弹出代码框作为初始化,我们在这里编写我们所需要的功能即可。
在这里插入图片描述

然后双击button按钮,我们在button1_Click里编辑按钮功能。通过这个函数,来获取目标网址的json文件。webBrowser1.Navigate("https://v1.hitokoto.cn/");
但是由于web这个控件默认是比较低的IE版本,因此会弹出下载框。这里我们需要复制以下内容到txt文件,并将它重命名为*.reg文件,双击打开后即可。

Windows Registry Editor Version 5.00
 
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=dword:00080000
 
 
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"encoding"=dword:00080000

然后双击webBrowser控件,添加以下函数,将目标网址的html转成string格式并赋值给html。

string html = string.Empty;
html = (string)webBrowser1.DocumentText;//获取网址html文件
textBox1.Text = html;//将html内容显示在textBox中。

这样就得到了我们想要的html内容:
在这里插入图片描述
但是这把所有内容都显示出来了,而我们只想要返回的语句。因此我们将返回的html进行分析。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/回头ml; charset=utf-8" http-equiv=Content-Type></HEAD>
<BODY><PRE>{"id":3908,"uuid":"79be7e3c-f61f-430a-a1f8-dbad7a861b43","hitokoto":"七岁断指,断了他的善,死前断臂,断了他的恶。","type":"d","from":"魔道祖师","from_who":null,"creator":"我養你啊_","creator_uid":2033,"reviewer":0,"commit_from":"web","created_at":"1537446128","length":22}</PRE></BODY></HTML>

通过几次调用返回结果可以观察出,每次返回的框架基本上都是一样的,因此我们可以通过字符串分割方式进行筛选:

 string[] sarray = html.Split(',');
 string[] sa = sarray[2].Split('"');
 string[] sa1 = sarray[4].Split('"');
 textBox1.Text = sa[3] + "\r\n";
 textBox1.AppendText("\r\t\t----" + sa1[3]);

这样就可以得到干净的语句与作者了:
在这里插入图片描述

三、添加下拉框

通过上面的测试,我们已经可以得到我们想要的效果了,但是还不可以选择我们想要的不同类型的语句。
这里我们将五个控件全部添加(button、comboBox、label、textBox、webBrowser),由于我们现在不需要webBrowser控件显示内容,因此可以将该控件最小化(将控件框缩小到最小)。
在这里插入图片描述
首先,我们在下拉框中添加每个类型的编号与含义:

           comboBox1.Items.Add("a:动漫");//初始化下拉框内容
            comboBox1.Items.Add("b:漫画");
            comboBox1.Items.Add("c:游戏");
            comboBox1.Items.Add("d:文学");
            comboBox1.Items.Add("e:原创");
            comboBox1.Items.Add("f:来自网络");
            comboBox1.Items.Add("g:其他");
            comboBox1.Items.Add("h:影视");
            comboBox1.Items.Add("i:诗词");
            comboBox1.Items.Add("j:网易云");
            comboBox1.Items.Add("k:哲学");
            comboBox1.Items.Add("l:抖机灵");
            comboBox1.Text = "随机";//默认随机

这样再打开下拉框就可以显示选项了:
在这里插入图片描述
因为我们目标网址是以a~l进行访问的,因此我们需要将comboBox里面的内容提取出来:

string str = comboBox1.Text;//将下拉框内容添加到一个变量中
            if(str == "随机")
            {
                webBrowser1.Navigate("https://v1.hitokoto.cn/");
            }
            else
            {
                string data = str.Substring(0, 1);
                webBrowser1.Navigate("https://v1.hitokoto.cn/?c="+data);
            }

这里str.Substring(0, 1)表示从第0位开始选,选择1位字符。
同时,为了在软件刚启动时就加载一个语句,我们可以在Form1_Load
中添加webBrowser1.Navigate语句。 this.Opacity = 0.75可以设置软件背景的透明度。

 this.Opacity = 0.75;
 webBrowser1.Navigate("https://v1.hitokoto.cn/");

这样一个简单的小工具就完成啦!
在这里插入图片描述

项目工程地址

感兴趣的可以加入QQ群交流更多问题!群号:964950583

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值