3

「メソッド許可されていません」エラー405がスローされます私は今、しばらくの間、Javascriptを圧縮するyのアプリケーションの一部として閉鎖を使用して、ちょうど誤りになど405 - Method not allowedGoogleの閉鎖コンパイルREST APIが突然

私のコードを取得し始めてきました下の2年間働いていたが、今停止している。

注:私のアプリケーションのJavascriptファイルで変更が検出されたときに、頻繁に呼び出されることはありません。

クローザーアプリからこれ以上のエラー情報は得られません。

明らかに、このコードはPOSTの操作を実行します。ここで見つけたフォームを使用すると、それはうまく動作しますが、URLにブラウザを使用したり、コードを使用したりすると、Error 405が得られます。GETメソッドを試しているようです...

アイデア

Public Class Closure 

    Property OriginalCode As String 
    Property CompiledCode As String 
    Property Errors As ArrayList 
    Property Warnings As ArrayList 
    Property Statistics As Dictionary(Of String, Object) 

    Public Sub New(Input As String, Optional CompliationLevel As String = "SIMPLE_OPTIMIZATIONS") 

     Dim _HttpWebRequest As HttpWebRequest 
     Dim _Result As StringBuilder 
     Dim ClosureWebServiceURL As String = "http://closure-compiler.appspot.com/compile?" 
     Dim ClosureWebServicePOSTData As String = "output_format=json&output_info=compiled_code" & 
                     "&output_info=warnings" & 
                     "&output_info=errors" & 
                     "&output_info=statistics" & 
                     "&compilation_level=" & CompliationLevel & "" & 
                     "&warning_level=default" & 
                     "&js_code={0}" 


     '// Create the POST data 
     Dim Data = String.Format(ClosureWebServicePOSTData, HttpUtility.UrlEncode(Input)) 

     _Result = New StringBuilder 
     _HttpWebRequest = DirectCast(WebRequest.Create(ClosureWebServiceURL), HttpWebRequest) 
     _HttpWebRequest.Method = "POST" 
     _HttpWebRequest.ContentType = "application/x-www-form-urlencoded" 
     '//Set the content length to the length of the data. This might need to change if you're using characters that take more than 256 bytes 
     _HttpWebRequest.ContentLength = Data.Length 
     '//Write the request stream 
     Using SW As New StreamWriter(_HttpWebRequest.GetRequestStream()) 
      SW.Write(Data) 
     End Using 

     Try 

      Dim response As WebResponse = _HttpWebRequest.GetResponse() 

      Using responseStream As Stream = response.GetResponseStream 
       Dim encoding As Encoding = System.Text.Encoding.GetEncoding("utf-8") 
       Using readStream As New StreamReader(responseStream, encoding) 
        Dim read(256) As Char 
        Dim count As Integer = readStream.Read(read, 0, 256) 
        While count > 0 
         Dim str As New String(read, 0, count) 
         _Result.Append(str) 
         count = readStream.Read(read, 0, 256) 
        End While 
       End Using 
      End Using 

      Dim js As New JavaScriptSerializer 
      js.MaxJsonLength = Int32.MaxValue 

      Dim d As Dictionary(Of String, Object) = js.Deserialize(Of Dictionary(Of String, Object))(_Result.ToString()) 
      Me.CompiledCode = d.NullKey("compiledCode") 
      Me.Warnings = TryCast(d.NullKey("warnings"), ArrayList) 
      Me.Errors = TryCast(d.NullKey("errors"), ArrayList) 
      Me.Statistics = TryCast(d.NullKey("statistics"), Dictionary(Of String, Object)) 

     Catch ex As Exception 
      Me.CompiledCode = "" 
      If Me.Errors Is Nothing Then 
       Dim er As New List(Of String) 
       er.Add(ex.ToString()) 
       Me.Errors = New ArrayList(er) 
      Else 
       Me.Errors.Add(ex.ToString()) 
      End If 
     End Try 

     Me.OriginalCode = Input 

    End Sub 

End Class 

答えて

3

閉鎖REST APIがhttpsにリダイレクトされ、あなたは直接リダイレクトを避けるために、「https://closure-compiler.appspot.com/compile」に投稿しようとすることをお勧めします。

+0

ありがとうございます!とても簡単!それは今働くように思われます - それがなぜただ失敗し始めたのだろうか? –

関連する問題