ASP.Netだけで完結しているシステムなら関係ないのかもしれないが、WebAPIだと何から呼ばれるかわからない。それが、PHPからかもしれないわけですよ。そうしたら、
1 2 3 4 5 | // POSTされてるのは、values[0], values[1]など if (Request.Form.getValues( "values" ) == null ) { // 呼ばれちゃう Debug.WriteLine( "valuesがnullだってさ!" ); } |
ということになってしまった。こんなのはphpやってる俺からしたら想定外の出来事。どうもvalues=aaa&values=bbbという感じで、ようやくgetValuesで値が取得できるみたいだけど、普通か、これ?
このC#で動いてるWebAPIをコールするプログラムは、PHPで動いてるWebAPIもコールしに行くので(言語が違うだけで動作は全く同じWebAPI)コールするプログラム側は変えられないので、C#側を変更するしかなさそうだと。
ということで、genericクラスを使うことにした。
1 2 3 4 5 6 7 8 9 | int i = 0; System.Collections.Generic.List< string > values = new System.Collections.Generic.List< string >(); while (Request.Form.Get( "values[" + i + "]" ) != null ){ values.Add(Request.Form.Get( "values[" + i + "]" )); i++; } if (values.Count == 0){ // valuesはPOSTされてない } |
なんとか、これで、PHPと同じように処理できるようになった。
他にもっとスマートな方法があるようでしたら、教えてもらいたいなぁ~。