ASP.Netだけで完結しているシステムなら関係ないのかもしれないが、WebAPIだと何から呼ばれるかわからない。それが、PHPからかもしれないわけですよ。そうしたら、
// 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クラスを使うことにした。
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と同じように処理できるようになった。
他にもっとスマートな方法があるようでしたら、教えてもらいたいなぁ~。
