하나의 가능성은 UploadDataAsync 방법 등을 사용하는
public class Animal{
public string Message {get;set;}
}
웹 API 방법
public void DoSomething(Animal a){
}
클라이언트
Animal a = new Animal();
a.Message = "öçşistltl";
string postDataString = JsonConvert.SerializeObject(a);
string URL = "http://localhost/Values/DoSomething";
WebClient client = new WebClient();
client.UploadStringCompleted += client_UploadStringCompleted;
client.Headers["Content-Type"] = "application/json;charset=utf-8";
client.UploadStringAsync(new Uri(URL), "POST",postDataString);
안부,
케말입니다 사용중인 UploadStringAsync
메소드가 기본적으로 Encoding.Default
을 사용하여 소켓에 데이터를 인코딩 할 때 데이터를 인코딩 할 때 UTF-8을 지정해야합니다. 따라서 시스템이 UTF-8 이외의 다른 인코딩을 사용하도록 구성되어 있다면 UploadStringAsync
은 시스템 인코딩을 사용하지만 콘텐츠 유형 헤더에서는 charset=utf-8
이 충돌 할 수 있기 때문에 문제가 발생합니다. UploadDataAsync
방법으로
당신은 당신의 의도에 더 명시 될 수있다 :
Animal a = new Animal();
a.Message = "öçşistltl";
string postDataString = JsonConvert.SerializeObject(a);
string URL = "http://localhost/Values/DoSomething";
string postDataString = JsonConvert.SerializeObject(a);
using (WebClient client = new WebClient())
{
client.UploadDataCompleted += client_UploadDataCompleted;
client.Headers["Content-Type"] = "application/json; charset=utf-8";
client.UploadDataAsync(new Uri(URI), "POST", Encoding.UTF8.GetBytes(postDataString));
}
또 다른 가능성은 클라이언트의 인코딩을 지정하고 사용하는 것입니다 UploadStringAsync
:
Animal a = new Animal();
a.Message = "öçşistltl";
string postDataString = JsonConvert.SerializeObject(a);
string URL = "http://localhost/Values/DoSomething";
string postDataString = JsonConvert.SerializeObject(a);
using (WebClient client = new WebClient())
{
client.Encoding = Encoding.UTF8;
client.UploadStringCompleted += client_UploadStringCompleted;
client.Headers["Content-Type"] = "application/json; charset=utf-8";
client.UploadStringAsync(new Uri(URI), "POST", postDataString);
}
또는 Microsoft.AspNet.WebApi.Client
NuGet 패키지를 cl에 설치하는 경우 ient 직접 WebClient
대신 WebAPI를 소비 (블록에 새로운 아이이다) 새로운 HttpClient
클래스를 사용할 수 있습니다
Animal a = new Animal();
a.Message = "öçşistltl";
var URI = "http://localhost/Values/DoSomething";
using (var client = new HttpClient())
{
client
.PostAsync<Animal>(URI, a, new JsonMediaTypeFormatter())
.ContinueWith(x => x.Result.Content.ReadAsStringAsync().ContinueWith(y =>
{
Console.WriteLine(y.Result);
}))
.Wait();
}
이 코드를 제시해주십시오. 웹 API에 요청을 보내는 것이 가장 중요합니다. 또한 웹 API 조치가 도움이 될 수 있습니다. 코드를 표시하지 않고 코드가 작동하지 않는 이유를 어떻게 알 수 있습니까? 그것은 말도 안돼. –
내 의견을 편집하여 도움이되기를 바랍니다. – kkocabiyik
'client.Encoding = Encoding.UTF8;'시도해 봤어? –