>

아래 코드를 수행하려고하면 잘못된 콘텐츠 유형 (오류 번호 612)이 발생합니다.

정적 목록에서 리드 ID를 삭제하려고합니다. 리드 ID를 추가하거나 정적 목록 리드를 얻을 수 있습니다.

내가 작성한 포스트 및 겟 콜은 정상적으로 작동하지만, 포스트 콜은 url 문자열에서 데이터를 바로 요구하는 것 같습니다 ($"{endpointURL}/rest/v1/lists/{listID}/leads .json? id = {leadID} ";id를 json 객체로 포함하면 실패하기도합니다. 이것은 삭제 호출에서 내가 잘못하고있는 것에 대한 단서 일 수 있습니다.

string url = $"{endpointURL}/rest/v1/lists/{listID}/leads.json?id={leadID}";
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Authorization = new 
AuthenticationHeaderValue("Bearer", _access_token);
HttpResponseMessage response = await client.DeleteAsync(url);

여기서 응답하면 항상 유효하지 않은 콘텐츠 유형이됩니다.

deleteasync 호출을하기 전에이 행을 추가하면 deleteAsync 호출에 도달하기 전에 다른 오류가 발생합니다.

client.DefaultRequestHeaders.Add("Content-Type", "application/json");

오류는 "잘못된 헤더 이름입니다. 요청 헤더는 HttpRequestMessage, 응답 헤더는 HttpResponseMessage, 컨텐츠 헤더는 HttpContent 객체와 함께 사용해야합니다."


  • 답변 # 1

    이 코드에서 HttpRequestMessage를 사용해보십시오

    string url = $"{endpointURL}/rest/";
    HttpClient client = new HttpClient
    {
        BaseAddress = new Uri(url)
    };
    //I'm assuming you have leadID as an int parameter in the method signature
    Dictionary<string, int> jsonValues = new Dictionary<string, int>();
    jsonValues.Add("id", leadID);
    //create an instance of an HttpRequestMessage() and pass in the api end route and HttpMethod
    //along with the headers
    HttpRequestMessage request = new HttpRequestMessage
        (HttpMethod.Delete, $"v1/lists/{listID}") //<--I had to remove the leads.json part of the route... instead I'm going to take a leap of faith and hit this end point with the HttpMethod Delete and pass in a Id key value pair and encode it as application/json
        {
            Content = new StringContent(new JavaScriptSerializer().Serialize(jsonValues), Encoding.UTF8, "application/json")
        };
    request.Headers.Add("Bearer", _access_token);
    //since we've already told the request what type of httpmethod we're using 
    //(in this case: HttpDelete)
    //we could just use SendAsync and pass in the request as the argument
    HttpResponseMessage response = await client.SendAsync(request);
    
    

  • 답변 # 2

    이 솔루션은 몇 가지 제안의 조합으로 밝혀졌습니다.

    HttpClient client = new HttpClient();
    client.BaseAddress = new Uri(url);
    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Delete, data);
    // The key part was the line below
    request.Content = new StringContent(string.Empty, Encoding.UTF8, "application/json");
    if (!string.IsNullOrEmpty(_access_token))
    {
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _access_token);
    }
    HttpResponseMessage response = await client.SendAsync(request);
    
    

    이것은 저에게 효과적이었습니다.

관련 자료

  • 이전 github - 힘내, 치명적 - 원격 끝이 예기치 않게 끊어졌습니다
  • 다음 julia - 특정 패키지의 버전 확인