日韩高清免费不卡一区,蜜桃精品人妻一区二区三区,三级黄色老熟妇视频网,台湾无码av一区二区三区

幫助與文檔 > 產(chǎn)品文檔 > 自然語言翻譯服務 > API文檔 > 網(wǎng)頁翻譯
網(wǎng)頁翻譯

網(wǎng)頁翻譯 API 簡介

概念解釋

網(wǎng)頁翻譯:可對網(wǎng)頁html標簽自動識別,翻譯所需內容。

說明

Hi,您好,歡迎使用有道智云網(wǎng)頁翻譯API接口服務。

本文檔主要針對需要集成HTTP API的技術開發(fā)工程師,詳細描述網(wǎng)頁翻譯能力相關的技術內容。

如果您有與我們商務合作的需求,可以通過以下方式聯(lián)系我們:

商務郵箱: AIcloud_Business@corp.youdao.com

如果您對文檔內容有任何疑問,可以通過以下幾種方式聯(lián)系我們:

客服QQ:1906538062

智云翻譯技術交流QQ 1群: 652880659

智云翻譯技術交流QQ 2群: 669384425

智云翻譯技術交流QQ 3群: 807539209

智云翻譯技術交流QQ 4群: 936752411

聯(lián)系郵箱: zhiyun@corp.youdao.com

溫馨提示:

  • 本文檔主要針對開發(fā)人員,接入測試前需要獲取 應用ID應用密鑰;如果您還沒有,請按照新手指南 獲取。
  • 平臺向每個賬戶贈送50元的體驗金,供用戶集成前測試所用,具體資費規(guī)則詳見 網(wǎng)頁翻譯服務報價 。

接口說明

網(wǎng)頁翻譯API接口提供有道的翻譯服務,可對網(wǎng)頁html標簽自動識別,翻譯所需內容,支持多語種進行翻譯,詳情參考支持的語種列表。

網(wǎng)頁翻譯API HTTPS地址:

https://openapi.youdao.com/translate_html

協(xié)議須知

調用方在集成網(wǎng)頁翻譯API時,請遵循以下規(guī)則。

規(guī)則描述
傳輸方式HTTPS
請求方式GET/POST
字符編碼統(tǒng)一使用UTF-8 編碼
請求格式表單
響應格式JSON

接口調用參數(shù)

調用API需要向接口發(fā)送以下字段來訪問服務。

字段名類型含義必填備注
qtext待翻譯文本True必須是UTF-8編碼
fromtext源語言True參考下方 支持語言
totext目標語言True參考下方 支持語言
appKeytext應用IDTrue可在應用管理 查看
salttextUUIDTrueuuid,唯一通用識別碼
signtext簽名Truesha256(應用ID+input+salt+curtime+應用密鑰)
signTypetext簽名類型Truev3
curtimetext當前UTC時間戳(秒)trueTimeStamp
vocabIdtext用戶上傳的術語表false用戶指定的術語表ID: out_id,支持英中互譯,更多語種方向請前往控制臺查詢

簽名生成方法如下:
signType=v3;
sign=sha256(應用ID+input+salt+curtime+應用密鑰);
其中,input的計算方式為:input=q前10個字符 + q長度 + q后10個字符(當q長度大于20)或 input=q字符串(當q長度小于等于20);

注意:

  1. 接口salt+curtime來防重放(即一個請求不可以被請求2次),所以salt最好為UUID。

不同語言獲取時間戳,請參看此鏈接

如果對簽名有疑問,可以參看各語言demo。

用戶術語表使用

登錄控制臺,選擇網(wǎng)頁翻譯服務,點擊右側的術語表,選擇新建,填寫表名稱和語言方向,添加需要的術語表獲取對應詞表id即可。

輸出結果

正常返回

字段名含義
data翻譯結果
errorCode錯誤碼
errorMessage成功信息

異常返回

字段名含義
errorCode錯誤碼
errorMessage錯誤信息

支持語言

下表為各語言對應代碼:

中文名代碼
阿拉伯文ar
德文de
英文en
西班牙文es
法文fr
印度尼西亞語id
意大利文it
日文ja
韓文ko
荷蘭語nl
葡萄牙文pt
俄文ru
泰語th
越南語vi
中文zh-CHS
中文繁體zh-CHT

注意:若列表語言出現(xiàn)不支持的問題,請參文檔下方或者考產(chǎn)品定價列表語種互譯的限制

以下場景語種間翻譯不支持

源語種中文名代碼目標語種中文名代碼
德語de印地語hi
英語en葡萄牙語pt
印地語hi德語de
印地語hi荷蘭語nl
印地語hi葡萄牙語pt
荷蘭語nl印地語hi
葡萄牙語pt印地語hi

服務配置

單次查詢最大字符數(shù)支持語言
100萬詳見語種表

錯誤代碼列表

錯誤碼含義
101缺少必填的參數(shù),首先確保必填參數(shù)齊全,然后確認參數(shù)書寫是否正確。
102不支持的語言類型
103翻譯文本過長
104不支持的API類型
105不支持的簽名類型
106不支持的響應類型
107不支持的傳輸加密類型
108應用ID無效,注冊賬號,登錄后臺創(chuàng)建應用并完成綁定,可獲得應用ID和應用密鑰等信息
109batchLog格式不正確
110無相關服務的有效應用,應用沒有綁定服務應用,可以新建服務應用。注:某些服務的翻譯結果發(fā)音需要tts服務,需要在控制臺創(chuàng)建語音合成服務綁定應用后方能使用。
111開發(fā)者賬號無效
112請求服務無效
113q不能為空
114不支持的圖片傳輸方式
116strict字段取值無效,請參考文檔填寫正確參數(shù)值
201解密失敗,可能為DES,BASE64,URLDecode的錯誤
202簽名檢驗失敗,如果確認應用ID和應用密鑰的正確性,仍返回202,一般是編碼問題。請確保翻譯文本 q 為UTF-8編碼.
203訪問IP地址不在可訪問IP列表
205請求的接口與應用的平臺類型不一致,確保接入方式(Android SDK、IOS SDK、API)與創(chuàng)建的應用平臺類型一致。如有疑問請參考入門指南
206因為時間戳無效導致簽名校驗失敗
207重放請求(接口salt+curtime來防重放(即一個請求不可以被請求2次),所以salt最好為UUID。)
301辭典查詢失敗
302翻譯查詢失敗
303服務端的其它異常
304會話閑置太久超時
401賬戶已經(jīng)欠費,請進行賬戶充值
402offlinesdk不可用
405鑒權失敗
500翻譯失敗,請參考errorMessage
411訪問頻率受限,請稍后訪問
412長請求過于頻繁,請稍后訪問
1001無效的OCR類型
1002不支持的OCR image類型
1003不支持的OCR Language類型
1004識別圖片過大
1201圖片base64解密失敗
1301OCR段落識別失敗
1411訪問頻率受限
1412超過最大識別字節(jié)數(shù)
2003不支持的語言識別Language類型
2004合成字符過長
2005不支持的音頻文件類型
2006不支持的發(fā)音類型
2201解密失敗
2301服務的異常
2411訪問頻率受限,請稍后訪問
2412超過最大請求字符數(shù)
3001不支持的語音格式
3002不支持的語音采樣率
3003不支持的語音聲道
3004不支持的語音上傳類型
3005不支持的語言類型
3006不支持的識別類型
3007識別音頻文件過大
3008識別音頻時長過長
3009不支持的音頻文件類型
3010不支持的發(fā)音類型
3201解密失敗
3301語音識別失敗
3302語音翻譯失敗
3303服務的異常
3411訪問頻率受限,請稍后訪問
3412超過最大請求字符數(shù)
4001不支持的語音識別格式
4002不支持的語音識別采樣率
4003不支持的語音識別聲道
4004不支持的語音上傳類型
4005不支持的語言類型
4006識別音頻文件過大
4007識別音頻時長過長
4201解密失敗
4301語音識別失敗
4303服務的異常
4411訪問頻率受限,請稍后訪問
4412超過最大請求時長
5001無效的OCR類型
5002不支持的OCR image類型
5003不支持的語言類型
5004識別圖片過大
5005不支持的圖片類型
5006文件為空
5201解密錯誤,圖片base64解密失敗
5301OCR段落識別失敗
5411訪問頻率受限
5412超過最大識別流量
9001不支持的語音格式
9002不支持的語音采樣率
9003不支持的語音聲道
9004不支持的語音上傳類型
9005不支持的語音識別 Language類型
9301ASR識別失敗
9303服務器內部錯誤
9411訪問頻率受限(超過最大調用次數(shù))
9412超過最大處理語音長度
10001無效的OCR類型
10002不支持的OCR image類型
10004識別圖片過大
10201圖片base64解密失敗
10301OCR段落識別失敗
10411訪問頻率受限
10412超過最大識別流量
11001不支持的語音識別格式
11002不支持的語音識別采樣率
11003不支持的語音識別聲道
11004不支持的語音上傳類型
11005不支持的語言類型
11006識別音頻文件過大
11007識別音頻時長過長,最大支持30s
11201解密失敗
11301語音識別失敗
11303服務的異常
11411訪問頻率受限,請稍后訪問
11412超過最大請求時長
12001圖片尺寸過大
12002圖片base64解密失敗
12003引擎服務器返回錯誤
12004圖片為空
12005不支持的識別圖片類型
12006圖片無匹配結果
13001不支持的角度類型
13002不支持的文件類型
13003表格識別圖片過大
13004文件為空
13301表格識別失敗
15001需要圖片
15002圖片過大(1M)
15003服務調用失敗
17001需要圖片
17002圖片過大(1M)
17003識別類型未找到
17004不支持的識別類型
17005服務調用失敗

errorMessage說明:

錯誤碼含義
11不支持的語言方向
12輸入的html文本超過長度限制
14不支持的翻譯內容
30翻譯失敗
31部分翻譯成功

常用語言 Demo

Java 示例

import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.*;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.*;


public class Translate_htmlV3Demo {

private static Logger logger = LoggerFactory.getLogger(Translate_htmlV3Demo.class);

private static final String YOUDAO_URL = "https://openapi.youdao.com/translate_html";

private static final String APP_KEY = "您的應用ID";

private static final String APP_SECRET = "您的應用密鑰";

public static void main(String[] args) throws IOException {

    Map<String,String> params = new HashMap<String,String>();
    String q = "待輸入的文字";
    String salt = String.valueOf(System.currentTimeMillis());
    String from = "源語言";
    String to = "目標語言";
    params.put("from",from);
    params.put("to",to);
    params.put("signType", "v3");
    String curtime = String.valueOf(System.currentTimeMillis() / 1000);
    params.put("curtime", curtime);
    String signStr = APP_KEY + truncate(q) + salt + curtime + APP_SECRET;
    String sign = getDigest(signStr);
    params.put("appKey", APP_KEY);
    params.put("q", q);
    params.put("salt", salt);
    params.put("sign", sign);
    /** 處理結果 */
    requestForHttp(YOUDAO_URL,params);
}

public static void requestForHttp(String url,Map<String,String> params) throws IOException {

    /** 創(chuàng)建HttpClient */
    CloseableHttpClient httpClient = HttpClients.createDefault();

    /** httpPost */
    HttpPost httpPost = new HttpPost(url);
    List<NameValuePair> paramsList = new ArrayList<NameValuePair>();
    Iterator<Map.Entry<String,String>> it = params.entrySet().iterator();
    while(it.hasNext()){
        Map.Entry<String,String> en = it.next();
        String key = en.getKey();
        String value = en.getValue();
        paramsList.add(new BasicNameValuePair(key,value));
    }
    httpPost.setEntity(new UrlEncodedFormEntity(paramsList,"UTF-8"));
    CloseableHttpResponse httpResponse = httpClient.execute(httpPost);
    try{
        Header[] contentType = httpResponse.getHeaders("Content-Type");
        logger.info("Content-Type:" + contentType[0].getValue());
        if("audio/mp3".equals(contentType[0].getValue())){
            //如果響應是wav
            HttpEntity httpEntity = httpResponse.getEntity();
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            httpResponse.getEntity().writeTo(baos);
            byte[] result = baos.toByteArray();
            EntityUtils.consume(httpEntity);
            if(result != null){//合成成功
                String file = "合成的音頻存儲路徑"+System.currentTimeMillis() + ".mp3";
                byte2File(result,file);
            }
        }else{
            /** 響應不是音頻流,直接顯示結果 */
            HttpEntity httpEntity = httpResponse.getEntity();
            String json = EntityUtils.toString(httpEntity,"UTF-8");
            EntityUtils.consume(httpEntity);
            logger.info(json);
            System.out.println(json);
        }
    }finally {
        try{
            if(httpResponse!=null){
                httpResponse.close();
            }
        }catch(IOException e){
            logger.info("## release resouce error ##" + e);
        }
    }
}

/**
 * 生成加密字段
 */
public static String getDigest(String string) {
    if (string == null) {
        return null;
    }
    char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
    byte[] btInput = string.getBytes();
    try {
        MessageDigest mdInst = MessageDigest.getInstance("SHA-256");
        mdInst.update(btInput);
        byte[] md = mdInst.digest();
        int j = md.length;
        char str[] = new char[j * 2];
        int k = 0;
        for (byte byte0 : md) {
            str[k++] = hexDigits[byte0 >>> 4 & 0xf];
            str[k++] = hexDigits[byte0 & 0xf];
        }
        return new String(str);
    } catch (NoSuchAlgorithmException e) {
        return null;
    }
}

/**
*
* @param result 音頻字節(jié)流
* @param file 存儲路徑
*/
private static void byte2File(byte[] result, String file) {
    File audioFile = new File(file);
    FileOutputStream fos = null;
    try{
        fos = new FileOutputStream(audioFile);
        fos.write(result);

    }catch (Exception e){
        logger.info(e.toString());
    }finally {
        if(fos != null){
            try {
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}
    public static String truncate(String q) {
        if (q == null) {
            return null;
        }
        int len = q.length();
        String result;
        return len <= 20 ? q : (q.substring(0, 10) + len + q.substring(len - 10, len));
    }
}

python2示例

# -*- coding: utf-8 -*-
import sys
import uuid
import requests
import hashlib
import time
import time

reload(sys)
sys.setdefaultencoding('utf-8')

YOUDAO_URL = 'https://openapi.youdao.com/translate_html'
APP_KEY = '您的應用ID'
APP_SECRET = '您的應用密鑰'


def encrypt(signStr):
    hash_algorithm = hashlib.sha256()
    hash_algorithm.update(signStr.encode('utf-8'))
    return hash_algorithm.hexdigest()


def truncate(q):
    if q is None:
        return None
    size = len(q)
    return q if size <= 20 else q[0:10] + str(size) + q[size - 10:size]


def do_request(data):
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    return requests.post(YOUDAO_URL, data=data, headers=headers)


def connect():
    q = "待輸入的文字"

    data = {}
    data['from'] = '源語言'
    data['to'] = '目標語言'
    data['signType'] = 'v3'
    curtime = str(int(time.time()))
    data['curtime'] = curtime
    salt = str(uuid.uuid1())
    signStr = APP_KEY + truncate(q) + salt + curtime + APP_SECRET
    sign = encrypt(signStr)
    data['appKey'] = APP_KEY
    data['q'] = q
    data['salt'] = salt
    data['sign'] = sign

    response = do_request(data)
    contentType = response.headers['Content-Type']
    if contentType == "audio/mp3":
        millis = int(round(time.time() * 1000))
        filePath = "合成的音頻存儲路徑" + str(millis) + ".mp3"
        fo = open(filePath, 'wb')
        fo.write(response.content)
        fo.close()
    else:
        print response.content


if __name__ == '__main__':
    connect()

python3示例

# -*- coding: utf-8 -*-
import sys
import uuid
import requests
import hashlib
import time
from importlib import reload

import time

reload(sys)

YOUDAO_URL = 'https://openapi.youdao.com/translate_html'
APP_KEY = '您的應用ID'
APP_SECRET = '您的應用密鑰'


def encrypt(signStr):
    hash_algorithm = hashlib.sha256()
    hash_algorithm.update(signStr.encode('utf-8'))
    return hash_algorithm.hexdigest()


def truncate(q):
    if q is None:
        return None
    size = len(q)
    return q if size <= 20 else q[0:10] + str(size) + q[size - 10:size]


def do_request(data):
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    return requests.post(YOUDAO_URL, data=data, headers=headers)


def connect():
    q = "待輸入的文字"

    data = {}
    data['from'] = '源語言'
    data['to'] = '目標語言'
    data['signType'] = 'v3'
    curtime = str(int(time.time()))
    data['curtime'] = curtime
    salt = str(uuid.uuid1())
    signStr = APP_KEY + truncate(q) + salt + curtime + APP_SECRET
    sign = encrypt(signStr)
    data['appKey'] = APP_KEY
    data['q'] = q
    data['salt'] = salt
    data['sign'] = sign

    response = do_request(data)
    contentType = response.headers['Content-Type']
    if contentType == "audio/mp3":
        millis = int(round(time.time() * 1000))
        filePath = "合成的音頻存儲路徑" + str(millis) + ".mp3"
        fo = open(filePath, 'wb')
        fo.write(response.content)
        fo.close()
    else:
        print(response.content)


if __name__ == '__main__':
    connect()

php示例

<?php
define("CURL_TIMEOUT",   2000);
define("URL",            "https://openapi.youdao.com/translate_html");
define("APP_KEY",        "您的應用ID"); // 替換為您的應用ID
define("SEC_KEY",        "您的應用密鑰"); // 替換為您的密鑰

function do_request($q)
{
    $salt = create_guid();
    $args = array(
        'q' => $q,
        'appKey' => APP_KEY,
        'salt' => $salt,
    );
    $args['from'] = '源語言';
    $args['to'] = '目標語言';
    $args['signType'] = 'v3';
    $curtime = strtotime("now");
    $args['curtime'] = $curtime;
    $signStr = APP_KEY . truncate($q) . $salt . $curtime . SEC_KEY;
    $args['sign'] = hash("sha256", $signStr);
    $ret = call(URL, $args);
    return $ret;
}

// 發(fā)起網(wǎng)絡請求
function call($url, $args=null, $method="post", $testflag = 0, $timeout = CURL_TIMEOUT, $headers=array())
{
    $ret = false;
    $i = 0;
    while($ret === false)
    {
        if($i > 1)
            break;
        if($i > 0)
        {
            sleep(1);
        }
        $ret = callOnce($url, $args, $method, false, $timeout, $headers);
        $i++;
    }
    return $ret;
}

function callOnce($url, $args=null, $method="post", $withCookie = false, $timeout = CURL_TIMEOUT, $headers=array())
{
    $ch = curl_init();
    if($method == "post")
    {
        $data = convert($args);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_POST, 1);
    }
    else
    {
        $data = convert($args);
        if($data)
        {
            if(stripos($url, "?") > 0)
            {
                $url .= "&$data";
            }
            else
            {
                $url .= "?$data";
            }
        }
    }
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    if(!empty($headers))
    {
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    }
    if($withCookie)
    {
        curl_setopt($ch, CURLOPT_COOKIEJAR, $_COOKIE);
    }
    $r = curl_exec($ch);
    curl_close($ch);
    return $r;
}

function convert(&$args)
{
    $data = '';
    if (is_array($args))
    {
        foreach ($args as $key=>$val)
        {
            if (is_array($val))
            {
                foreach ($val as $k=>$v)
                {
                    $data .= $key.'['.$k.']='.rawurlencode($v).'&';
                }
            }
            else
            {
                $data .="$key=".rawurlencode($val)."&";
            }
        }
        return trim($data, "&");
    }
    return $args;
}

// uuid generator
function create_guid(){
    $microTime = microtime();
    list($a_dec, $a_sec) = explode(" ", $microTime);
    $dec_hex = dechex($a_dec* 1000000);
    $sec_hex = dechex($a_sec);
    ensure_length($dec_hex, 5);
    ensure_length($sec_hex, 6);
    $guid = "";
    $guid .= $dec_hex;
    $guid .= create_guid_section(3);
    $guid .= '-';
    $guid .= create_guid_section(4);
    $guid .= '-';
    $guid .= create_guid_section(4);
    $guid .= '-';
    $guid .= create_guid_section(4);
    $guid .= '-';
    $guid .= $sec_hex;
    $guid .= create_guid_section(6);
    return $guid;
}

function create_guid_section($characters){
    $return = "";
    for($i = 0; $i < $characters; $i++)
    {
        $return .= dechex(mt_rand(0,15));
    }
    return $return;
}

function truncate($q) {
    $len = abslength($q);
    return $len <= 20 ? $q : (mb_substr($q, 0, 10) . $len . mb_substr($q, $len - 10, $len));
}

function abslength($str)
{
    if(empty($str)){
        return 0;
    }
    if(function_exists('mb_strlen')){
        return mb_strlen($str,'utf-8');
    }
    else {
        preg_match_all("/./u", $str, $ar);
        return count($ar[0]);
    }
}

function ensure_length(&$string, $length){
    $strlen = strlen($string);
    if($strlen < $length)
    {
        $string = str_pad($string, $length, "0");
    }
    else if($strlen > $length)
    {
        $string = substr($string, 0, $length);
    }
}

// 輸入
$q = "待輸入的文字";

$ret = do_request($q);
print_r($ret);
$ret = json_decode($ret, true);
?>

c#示例

using System;
using System.IO;
using System.Web;
using System.Net;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Security.Cryptography;

namespace zhiyun_csharp_demo
{
    class Translate_htmlV3Demo
    {
        public static void Main()
        {
            Dictionary<String, String> dic = new Dictionary<String, String>();
            string url = "https://openapi.youdao.com/translate_html";
            string q = "待輸入的文字";
            string appKey = "您的應用ID";
            string appSecret = "您的應用密鑰";
            string salt = DateTime.Now.Millisecond.ToString();
            string from = "源語言";
            string to = "目標語言";
            dic.Add("from",from);
            dic.Add("to",to);
            dic.Add("signType", "v3");
            TimeSpan ts = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc));
            long millis = (long) ts.TotalMilliseconds;
            string curtime = Convert.ToString(millis / 1000);
            dic.Add("curtime", curtime);
            string signStr = appKey + Truncate(q) + salt + curtime + appSecret;;
            string sign = ComputeHash(signStr, new SHA256CryptoServiceProvider());
            dic.Add("q", System.Web.HttpUtility.UrlEncode(q));
            dic.Add("appKey", appKey);
            dic.Add("salt", salt);
            dic.Add("sign", sign);
            Post(url, dic);
        }

        protected static string ComputeHash(string input, HashAlgorithm algorithm)
        {
          Byte[] inputBytes = Encoding.UTF8.GetBytes(input);
          Byte[] hashedBytes = algorithm.ComputeHash(inputBytes);
          return BitConverter.ToString(hashedBytes).Replace("-", "");
        }

        protected static void Post(string url, Dictionary<String, String> dic)
        {
            string result = "";
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded";
            StringBuilder builder = new StringBuilder();
            int i = 0;
            foreach (var item in dic)
            {
                if (i > 0)
                    builder.Append("&");
                builder.AppendFormat("{0}={1}", item.Key, item.Value);
                i++;
            }
            byte[] data = Encoding.UTF8.GetBytes(builder.ToString());
            req.ContentLength = data.Length;
            using (Stream reqStream = req.GetRequestStream())
            {
                reqStream.Write(data, 0, data.Length);
                reqStream.Close();
            }
            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
          if (resp.ContentType.ToLower().Equals("audio/mp3"))
            {
                SaveBinaryFile(resp, "合成的音頻存儲路徑");
            }
            else {
                Stream stream = resp.GetResponseStream();
                using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
                {
                result = reader.ReadToEnd();
                }
                Console.WriteLine(result);
            }
        }

        protected static string Truncate(string q)
        {
            if (q == null)
            {
               return null;
            }
            int len = q.Length;
            return len <= 20 ? q : (q.Substring(0, 10) + len + q.Substring(len - 10, 10));
        }

        private static bool SaveBinaryFile(WebResponse response, string FileName)
        {
            string FilePath = FileName + DateTime.Now.Millisecond.ToString() + ".mp3";
            bool Value = true;
            byte[] buffer = new byte[1024];

            try
            {
                if (File.Exists(FilePath))
                    File.Delete(FilePath);
                Stream outStream = System.IO.File.Create(FilePath);
                Stream inStream = response.GetResponseStream();

                int l;
                do
                {
                    l = inStream.Read(buffer, 0, buffer.Length);
                    if (l > 0)
                        outStream.Write(buffer, 0, l);
                }
                while (l > 0);

                outStream.Close();
                inStream.Close();
            }
            catch
            {
                Value = false;
            }
            return Value;
        }
    }
}
欧美日韩一区二区乱码| 国产激情作爱在线观看| 久久久精品视频地址| 人人爽人人爽人人妻av| 亚洲国产成人久久精品不卡| 国产日韩欧美精品小视频| 精品无码中文字幕在线| 久久久久久精品无码免费看| 国产一区二区三区网址| 95精品视频在线观看| 精品国产99高清一区二区三区| 国产综合精品久久久久成人蜜臀| 九色精品国产亚洲av麻豆一| 激情小说校园春色亚洲| 免费人成视频在线观看不卡| av毛片在线免费观看| 亚洲区一区二区三区视频| 四虎国产精品成人免费久久| 91香蕉下载并安装| 久久久区一区二区三| 国偷自产av一区二区三区| 五月婷婷六月丁香免费视频| 中文字幕字幕一区二区三区| 成人亚洲视频在线观看| 亚洲国产一区二区精品最新在线观看| 激情久久三级视频网站| 色综合久久久久综合激情| 成人毛片女人18免费片| 爆操小骚货在线观看| 最新中文乱码字字幕在线看| 日本欧美一区二区免费不卡| 国产精品国语对白在线观看| 欧美大片在线免费看精品一区| 黄色网色网色网色网色网站| 久久久久久精品免费看| 欧美亚洲综合一区色婷婷| 国产白嫩精品久久久| 日韩精品一区二区三区视频最新| 日韩精品高清在线观看| 精品无码中文字幕在线| 国产精品v欧美精品v日本精|