socrata データ ポータルへの RESTful 呼び出しを使用してデータを取得しています。
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(WebConfigurationManager.AppSettings["APIEndPointHost"]);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string userName = WebConfigurationManager.AppSettings["UserName"];
string password = WebConfigurationManager.AppSettings["PassWord"];
string credentials = userName + ":" + password;
var byteArray = Encoding.ASCII.GetBytes(credentials);
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
client.DefaultRequestHeaders.Add("X-App-Token", WebConfigurationManager.AppSettings["AppToken"]);
HttpResponseMessage response = new HttpResponseMessage();
string searchCondition = "resource/xxxx-xxxx.json?$where=column1='something'AND column2='something';
response = client.GetAsync(searchCondition).Result;
問題は、「searchCondition」が 5000 文字を超える非常に大きくなることがあり、実行中に次のエラーが発生することです。
リクエストの送信中にエラーが発生しました。
サーバーがプロトコル違反を犯しました。Section=ResponseStatusLine
これは大きな requestUri を送信しているために発生しているのでしょうか、それとも socrata が検索条件の制限を制限していることと関係がありますか?