كيف يمكنني إرسال ملف CSV عبر REST API؟ [مغلق]

-3

أحاول إرسال ملف CSV إلى خادم من خلال REST API في C #. لقد كنت أبحث وأوصوا باستخدام مكتبة RestSharp. ضع في اعتبارك أن جميع طرق واجهة برمجة تطبيقات REST يجب أن تحتوي ، في الرأس ، على معلمة التفويض مع الرمز المميز الذي تم الحصول عليه من خلال طلب الالتماس.

1 إجابة

0

عملت هذا الحل بالنسبة لي.

// get tocken

 public string getToken(String sURL, String sUserName, String sPassword)
 {  String access_token = "";
     string clientId = "client";
     string clientSecret = "secret";
     string credentials = String.Format("{0}:{1}", clientId, clientSecret);
     RestClient restClient = new RestClient(sURL);
     RestRequest restRequest = new RestRequest("/oauth/token");
     restRequest.RequestFormat = DataFormat.Json;
     restRequest.Method = Method.POST;
     restRequest.AddHeader("Authorization", "Basic " + Convert.ToBase64String(Encoding.UTF8.GetBytes(credentials)));
     restRequest.AddHeader("Content-Type", "application/x-www-form-urlencoded");
     restRequest.AddHeader("Accept", "application/json");
     restRequest.AddParameter("grant_type", "password");
     restRequest.AddParameter("username", sUserName);
     restRequest.AddParameter("password", sPassword);
     try {
         var response = restClient.Execute(restRequest);
         if (response.StatusCode == HttpStatusCode.BadRequest){
             dynamic objError = new ExpandoObject();
             objError = JsonConvert.DeserializeObject(response.Content);
             access_token = "";
             var error = objError.invalid_grant;
             var error_description = objError.error_description;
             MessageBox.Show(error + " - " + error_description, "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
         if (response.StatusCode == HttpStatusCode.Accepted || response.StatusCode == HttpStatusCode.OK){
             dynamic objRpta = new ExpandoObject();
             objRpta = JsonConvert.DeserializeObject(response.Content);
             access_token = objRpta.access_token;
             String token_type = objRpta.token_type;
             int expires_in = objRpta.expires_in;
         }
     }
     catch(IOException e){
         MessageBox.Show(e.ToString(), "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
     return access_token;
}

//send CSV
public string sendDocumentoCSV(String strAccesoToken, String strRutaDocumento, String strURL)
{
    String strTicket = "";
    String code = "";
    RestClient restClient = new RestClient(strURL);
    RestRequest restRequest = new RestRequest("/v1/document");
    restRequest.RequestFormat = DataFormat.Json;
    restRequest.Method = Method.POST;

    restRequest.AddHeader("Authorization", "Bearer " + strAccesoToken);
    restRequest.AddHeader("Content-Type", "multipart/form-data");
    restRequest.AddHeader("Accept", "application/json");

    restRequest.AddFile("file", strRutaDocumento);

    var response = restClient.Execute(restRequest);

    dynamic objRptaTicket = new ExpandoObject();
    objRptaTicket = JsonConvert.DeserializeObject(response.Content);

    if (response.StatusCode == HttpStatusCode.OK){ 
        code = objRptaTicket.code;
        strTicket = objRptaTicket.description;
    }
    else{
        strEnvioDocCode = objRptaTicket.code;
        strEnvioDocTicket = objRptaTicket.description;
        MessageBox.Show(strEnvioDocCode + " " + strEnvioDocTicket, "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }

    return strTicket;
}
:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام