我想知道是否有人能帮我弄清楚为什么我的文本到语音应用程序无法运行。我正在创建一个桌面应用程序,您可以在其中输入一个输入区域,点击回车键,然后您的文本就会出现在输出框中。我希望此文本也发送到https://www.ivona.com使得它可以启用文本到语音
我正试图使用HTTPPOST请求来完成此操作,但当我点击回车键时,文本只出现在我的Unity项目中,并且我得到了错误
"WebException:远程服务器返回错误:(405)方法不允许。System.Net.HttpWebRequest.CheckFinalStatus(System.Net.WebAsyncResult结果)。
我的代码如下:
using UnityEngine;
using System.Collections.Specialized;
using System.Collections.Generic;
using UnityEngine.UI;
using System.Net;
using System.Linq;
using System.Text;
using System.IO;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System;
public class Draft : MonoBehaviour {
InputField input;
public Text output;
InputField.SubmitEvent SubEv;
// Use this for initialization
void Start ()
{
input = gameObject.GetComponent<InputField> ();
SubEv = new InputField.SubmitEvent ();
SubEv.AddListener (SubmitInput);
input.onEndEdit = SubEv;
}
private void SubmitInput (string arg0)
{
string currentText = output.text;
string newText = currentText + "n" + arg0;
output.text = newText;
input.text = "";
input.ActivateInputField ();
System.Net.ServicePointManager.ServerCertificateValidationCallback =
new System.Net.Security.RemoteCertificateValidationCallback(delegate { return true; });
string url = "https://www.ivona.com";
string postData = output.text;
byte[] data = Encoding.UTF8.GetBytes (postData);
var request = System.Net.WebRequest.Create (url) as System.Net.HttpWebRequest;
request.Method = "POST";
request.ContentType = "application/json";
request.ContentLength = data.Length;
///string responseJson = null;
using (var requestStream = request.GetRequestStream ()) {
requestStream.Write (data, 0, data.Length);
requestStream.Close ();
}
using (var response = request.GetResponse () as System.Net.HttpWebResponse) {
using (var reader = new System.IO.StreamReader (response.GetResponseStream ()))
;
//responseJson = reader.ReadToEnd ();
}
}
public bool MyRemoteCertificateValidationCallback (System.Object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
bool isOK = true;
if (sslPolicyErrors != SslPolicyErrors.None) {
for ( int i = 0; i < chain.ChainStatus.Length; i++)
{
if (chain.ChainStatus [i].Status != X509ChainStatusFlags.RevocationStatusUnknown)
{
chain.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain;
chain.ChainPolicy.RevocationMode = X509RevocationMode.Online;
chain.ChainPolicy.UrlRetrievalTimeout = new TimeSpan (0, 1, 0);
chain.ChainPolicy.VerificationFlags = X509VerificationFlags.AllFlags;
bool chainIsValid = chain.Build ((X509Certificate2)certificate);
if (!chainIsValid) {
isOK = false;
}
}
}
}
return isOK;
}
public class MyPolicy : ICertificatePolicy
{
public bool CheckValidationResult (ServicePoint srvPoint, X509Certificate certificate, WebRequest request, int certificateProblem)
{
return true;
}
}
}
如果有人能帮我弄清楚为什么它没有在科特迪瓦发布我在Unity中键入的内容,我将不胜感激。
祝你愉快:)
Audaray
我尝试了postatcher,似乎只有像Paul Jan所说的那样,如果我有付费订阅,IVONA才会允许我提出这样的请求。我在周末想了想,似乎就是这样。哦,好吧,学习过程的所有部分:)