2016-04-08 9 views
0

誰かが私のテキスト読み上げアプリを動作させることができない理由を理解するのに役立ちますか?私は、入力領域に入力してEnterキーを押すと、出力ボックスにテキストが表示されるデスクトップアプリケーションを作成しています。このテキストをhttps://www.ivona.comに送信して、テキスト読み上げを有効にします。
私はそうするHTTPのPOSTリクエストを使用しようとしているが、私はエンターキーを押したときに、テキストは私のユニティプロジェクトに表示され、私は
HTTP postを使用してUnity3DとC#を使用してブラウザのテキストエリアにテキストを送信

"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; 
    } 
} 



}   

私がユニティに入力したものをivonaに投稿していない理由を誰かが理解できたら、とても感謝しています。

は良い一日を:)

Audaray

+0

あなたが投稿しているAPIのようなものは、何か別のものを期待しているか、それとも投稿する権限がないかもしれません。 405はHTTP応答コードである。エンドポイントが別のメソッドを必要とする可能性はありますか? http://postcatcher.in/のようなキャッチャーサービスとあなたの投稿を試してみてください。あなたのアプリで実際に投稿されているものを調べることができます。 – Rob

+0

IvonaがプレーンなPOSTリクエストをサポートしていると思われるのはなぜですか?私が見る限り、彼らは(署名された要求を使って)有料サービスしか提供しません。 –

+0

あなたのお手伝いをしてくれてありがとう - 私はPostcatcherを試しました(非常に便利です、私は将来の使用のためにそれをブックマークします)、Paul-Janが示唆するように、有料サービスは私に必要なものです。あなたのご意見ありがとうございます! :) – Audaray

答えて

0

私はpostcatcherを試してみましたが、IVONAだけポール・ヤンが言うように、私は有料のサブスクリプションを持っているなら、私はそのような要求を行うことができるようになると思われます。私は週末にそれについて考えました、そして、そうであるようです。ああ、学習プロセスのすべての部分:)

関連する問題