巍巍清新一笑
2022-01-14 23:06
采纳率: 100%
浏览 20
已结题

请指导:将如下进行http的Python代码改成C#的

一直想使用C#的System.Net.Http实现以下Python的功能,可惜能力有限,一直报错。
Python代码
import base64
import datetime
import hashlib
import hmac
import urllib
import uuid

import requests

AccessKeyId = "XXXXXXXXXXXXXXXXXXXXX"
AccessKeySecret = "WWWWWWWWWWWWWWWWWWW"
url = "http://alinlp.cn-hangzhou.aliyuncs.com/"

# 自然语言分析
def nlpTest(text):
    param = {
        "Format": "json",
        "Version": "2020-06-29",
        "AccessKeyId": AccessKeyId,
        "SignatureMethod": "HMAC-SHA1",
        "Timestamp": (datetime.datetime.now() - datetime.timedelta(hours=8)).strftime("%Y-%m-%dT%H:%M:%SZ"),
        "SignatureVersion": "1.0",
        "SignatureNonce": uuid.uuid4().hex,
        "Text": text,
        "TokenizerId": "MAINSE",
        "Action": "GetSaChGeneral",
        "ServiceCode": "alinlp"
    }
    # 对参数按照key进行排序
    param_list = sorted(param.items(), key=lambda x: x[0])
    # 将key-value转化为url的形式
    StringToSign = urllib.parse.urlencode(param_list)
    # 做urlencode
    StringToSign = urllib.parse.quote(StringToSign)
    # 拼接头
    StringToSign = "GET&%2F&" + StringToSign
    # 拼接SHA1对应的key
    secret = AccessKeySecret + "&"
    # 计算SHA1值,并做base64
    sig = base64.b64encode(hmac.new(secret.encode("utf-8"), StringToSign.encode("utf-8"), hashlib.sha1).digest())
    # 将Signature添加到参数中
    param["Signature"] = bytes.decode(sig)
    # 发送http请求
    reponse = requests.get(url, param)
    return reponse.text

if __name__ == '__main__':
    data = nlpTest("周杰伦唱歌真好听!")
    print(data)


请帮忙基于C#的System.Net.Http实现一下,谢谢!
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

相关推荐 更多相似问题