混入码龄的巍巍清新一笑 2022-01-14 23:06 采纳率: 100%
浏览 25
已结题

请指导:将如下进行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实现一下,谢谢!
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 1月22日
    • 创建了问题 1月14日

    悬赏问题

    • ¥15 请各位帮我看看是哪里出了问题
    • ¥15 vs2019的js智能提示
    • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
    • ¥15 uniapp的h5项目写一个抽奖动画
    • ¥15 hadoop中启动hive报错如下怎么解决
    • ¥15 如何优化QWebEngineView 加载url的速度
    • ¥15 关于#hadoop#的问题,请各位专家解答!
    • ¥15 如何批量抓取网站信息
    • ¥15 Spring Boot离线人脸识别
    • ¥15 使用Ant Design Pro vue的时候,使用环境变量的时候,构建报错是什么原因