使用 HTTP post 使用 Unity3D 和 C# 将文本发送到浏览器文本区域
Using HTTP post to send Text to browser textarea using Unity3D and C#
我想知道是否有人可以帮我弄清楚为什么我的文本转语音应用程序无法运行。我正在创建一个桌面应用程序,您可以在其中键入输入区域,按回车键,然后您的文本将出现在输出框中。我希望将此文本也发送到 https://www.ivona.com,以便可以启用文本到语音转换。
我正在尝试使用 HTTP POST 请求来执行此操作,但是当我按下回车键时,该文本仅出现在我的 Unity 项目中,并且出现错误
"WebException : The remote server returned an error: (405) Method Not Allowed. System.Net.HttpWebRequest.CheckFinalStatus(System.Net.WebAsyncResult result).
我的代码如下:
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 中输入的内容发布到 ivona,我将不胜感激。
祝你有美好的一天:)
奥达雷
我尝试了 postcatcher,如果我像 Paul-Jan 所说的那样付费订阅,IVONA 似乎只允许我提出这样的请求。周末想了想,好像是这样的。哦好吧 - 学习过程的所有部分 :)
我想知道是否有人可以帮我弄清楚为什么我的文本转语音应用程序无法运行。我正在创建一个桌面应用程序,您可以在其中键入输入区域,按回车键,然后您的文本将出现在输出框中。我希望将此文本也发送到 https://www.ivona.com,以便可以启用文本到语音转换。
我正在尝试使用 HTTP POST 请求来执行此操作,但是当我按下回车键时,该文本仅出现在我的 Unity 项目中,并且出现错误
"WebException : The remote server returned an error: (405) Method Not Allowed. System.Net.HttpWebRequest.CheckFinalStatus(System.Net.WebAsyncResult result).
我的代码如下:
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 中输入的内容发布到 ivona,我将不胜感激。
祝你有美好的一天:)
奥达雷
我尝试了 postcatcher,如果我像 Paul-Jan 所说的那样付费订阅,IVONA 似乎只允许我提出这样的请求。周末想了想,好像是这样的。哦好吧 - 学习过程的所有部分 :)