通过https发布到Rest API时出现400错误请求

时间:2017-12-21 20:03:11

标签: rest https

我正在尝试通过https将json对象中的文件发布到外部rest api。我已经确认json对象的格式正确,我是否必须做一些特殊的事情才能通过https发布到rest api?我正在使用此处的答案作为指南:How to post JSON to the server?

 private static void PostDatatoFTP(string FileName,
     string fileString, string centerCode, string fileType) {
        try {

            byte[] plainTextBytes = Encoding.ASCII.GetBytes(fileString);
            string base64File = Convert.ToBase64String(plainTextBytes);

            FileInfo fileInfo = new FileInfo {
                FileData = base64File, 
                FileName = FileName, 
                FileType = fileType, 
                FileVersion = _fileVersion
            };



            FileInfo[] transmitFileInfo = new FileInfo[1];
            transmitFileInfo[0] = fileInfo;


            Json jsonObject = new Json {
                RequestType = _RequestType,
                APIVersion = _apiVersion,
                SubmissionId = Guid.NewGuid().ToString(),
                UserId = _ftpUsername,
                Password = _ftpPassword,
                Vendor = _vendor,
                CenterCode = centerCode,
                FileInfo = transmitFileInfo
            };

            var json = JsonConvert.SerializeObject(jsonObject);

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_uploadPath);
            request.Method = "POST";
            request.ContentType = "application/json";

            using (var streamWriter = new StreamWriter(request.GetRequestStream())) {
                streamWriter.Write(json);
            }

            var httpResponse = (HttpWebResponse)request.GetResponse();
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream() ?? throw new InvalidOperationException())) {
                var result = streamReader.ReadToEnd();
                Console.WriteLine(result);

            }


        }
        catch (WebException e) {
            Console.WriteLine(e.Message);
            String status = ((HttpWebResponse)e.Response).StatusDescription;
            Console.WriteLine(status);
        }
        catch (Exception ex) {
            Console.WriteLine(ex.Message);
        }
    }

0 个答案:

没有答案