2

Google は 400 の不正なリクエストを返しています。しかし、リクエストの何が問題なのですか?

open FSharp.Data

let apiKey = "key goes here - removed for stackoverflow"

let postUrl = "http://safebrowsing.clients.google.com/safebrowsing/downloads"
let testArray = "2\nhttp://www.google.com/\nhttp://ianfette.org/"

[<EntryPoint>]
let main argv = 

    let foo2 = Http.Request(postUrl, httpMethod = "Post",
        query   = [ "client", "api"; "apikey", apiKey; "appver", "1.0"; "pver", "2.2" ],
        body = TextRequest (testArray)
        )

    0

get リクエストを正常に実行して、キーが正しいことを確認しました。失敗しているのは投稿のみです。

4

1 に答える 1

2

FSharp.Data をバージョン 2.0.5 (2014-03-29 リリース) に更新すると、これが機能し始めました。以前のバージョンにはバグがあり、現在は修正されているとしか思えません。

リリース ノートの状態:

デフォルトの欠損値のリストに - を追加しました。既知の HTTP ヘッダーを間違ったケースで指定するためのサポートを再度追加しました。フル .NET バージョンで FSharp.Data のポータブル クラス ライブラリ バージョンを使用する場合の HTTP 要求の送信を修正しました。

最終的な(動作する)コードは次のとおりです。

open FSharp.Data

let apiKey = "key goes here"

let postUrl = "https://sb-ssl.google.com/safebrowsing/api/lookup"
let testArray = "2\nhttp://www.google.com/\nhttp://ianfette.org/"

[<EntryPoint>]
let main argv = 

    let foo2 = Http.Request(postUrl, httpMethod = "Post",
        query   = [ "client", "api"; "apikey", apiKey; "appver", "1.5.2"; "pver", "3.0" ],
        body = TextRequest (testArray)
        )

    0

質問の URL 文字列のエラーを見つけてくれた Sergey Tihon に感謝します。

于 2014-03-30T06:05:54.270 に答える