C#でkintoneからのレコード取得する際に520エラーが発生する。

C#でkintoneのレコードを取得するプログラムを作っているのですが、実行時にHttpStatusが520番の「不正なリクエストです。」というエラーが出て困っています。

他の方の類似の質問を一通り見ましたが、自分の状況と一致する事象がなかったので質問させていただきます。

気になる点としては、

・C#以外にもPostmanやJavascriptで同じ値でリクエストを送信しても同じエラーとなる

・"user:pass"をBase64エンコードした値を適当な値にしてリクエストを送ると以下のエラーに変わるため、通信と認証は問題ないと思われる。

「{“code”:“CB_WA01”,“id”:“vqEFuz7heVmNL1u4YewX”,“message”:“ユーザーのパスワード認証に失敗しました。「X-Cybozu-Authorization」ヘッダーの値が正しくありません。”}」

 

以下が、C#のコードです。

ご回答のほどお願い致します。

try

{

stringauth=Convert.ToBase64String(Encoding.UTF8.GetBytes("userid:password"));

varreq=HttpWebRequest.Create("https://xxx.cybozu.com/k/v1/record.json?app=1&id=1");

req.Headers.Add("Host", "xxx.cybozu.com:443");

req.Headers.Add("X-Cybozu-Authorization", auth);

req.ContentType="application/json";

req.Method=HttpMethod.Get.Method;

varresponse= (HttpWebResponse)req.GetResponse();

}

catch(WebException e)

{

Console.WriteLine(e.GetType());

Console.WriteLine(e.Message);

Console.WriteLine("HttpStatus:{0}", ((HttpWebResponse)e.Response).StatusCode);

Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);

varrespBody=newStreamReader(e.Response.GetResponseStream()).ReadToEnd();// Body取得

Console.WriteLine(respBody);

// 以下、出力結果
// > System.Net.WebException

// > The remote server returned an error: (520) 520.

// > HttpStatus:520

// > Status Description : 520

// > {"code":"CB_IL02","id":"VlZcZ3CMtK42fB9Zi7xd","message":"不正なリクエストです。"}

}

 

これについて、GETメソッドにContent-Typeを指定しているためだと思います。リクエストボディにパラメータを入れるときにはもちろん必要ですが、クエリにパラメータを入れた際に指定するとエラーになります。

Ryu Yamashita さん

ご回答頂きありがとうございます。Content-Typeの指定を削除することにより、無事データが取得できました。

 

ただ、以下の違いがよく分かりませんでした。

>リクエストボディにパラメータを入れるとき

>クエリにパラメータを入れた際

 

クエリにパラメータを入れた際というのは今回の件だと思われますが、リクエストボディにパラメータを入れるときとは、どういう時のことをおっしゃっていますか?

 

今回の原因(Content-Typeの要否)を含めてですが、ドキュメントに次のように記載があります。

(1) パラメータを HTTP のクエリ文字列で送信する場合

(2) パラメータを JSON形式で送信する場合(HTTP リクエストのリクエストボディに JSON データをセットする場合)

 

GETメソッドにおけるリクエストパラメータの送り方が2通りあります。

 

> クエリにパラメータを入れた際というのは今回の件だと思われますが、リクエストボディにパラメータを入れるときとは、どういう時のことをおっしゃっていますか?

 

 の後者は(2)に該当します。

Ryu Yamashita さん

マニュアルの提示ありがとうございます。

リクエストヘッダの箇所ですね。完全に見落としていました・・・・。

ちょっとしたkintoneのクセですね(不要という表現もちょっと曖昧ですし)。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。