니꼴라오
4월 15, 2022, 2:13오전
1
아래글 지우려고 하는데
이 주제를 삭제할 권한이 없습니다. 실제로 삭제하려면 추론과 함께 중재자주의 플래그를 제출하십시오.
이런 문구가 나오고 삭제가 안되더군요 ㅠㅠ
그리고 C# 구문 넣는 방법 알고 싶습니다.
일반적인 HttpWebRequest 클래스를 이용한 POST 전송방법입니다. Docs 나 그굴링 하면 그냥 다 똑같더군요
강제로 post data 값 : meta=meta&responseType=json 으로 하여 Encoding.UTF8.GetByte(~) 하여
Stream 으로 보냈습니다.
그런데 Web Api (웹페이지) 단에서는 해당 Post 가 넘어오지 않습니다.
Post (Request) 한 값을 Response 로 받아보면 값이 해당 값이 없는것입니다.
혹시나 해서 웹폼페이지에서 해당 meta, responseType 을 Form 전송 했는데 이건 잘들어옵니다.
왜 HttpWebReqeust 로 Request 했을 때 데이타가 누락되는 것일까요? 아니면 웹에서 뭔가를
해줘야 하는 것이 있는건가요?
정보가 파편화 되어 답을 드리기가 힘듭니다. 본 글을 기존 글의 댓글로 옮겨주세요.
니꼴라오
4월 15, 2022, 3:50오전
3
public string WebRequestJson(string url, string postData)
{
Logger.Debug(String.Format(“request:\r\n{0}\r\n----------------------------”, postData));
string ret = string.Empty;
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
var webRequest = System.Net.WebRequest.Create(url) as HttpWebRequest;
if (webRequest != null)
{
webRequest.ContentType = "application/x-www-form-urlencoded;";
webRequest.ContentLength = byteArray.Length;
webRequest.Method = "POST";
Stream dataStream = null;
try
{
dataStream = webRequest.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
}
catch (WebException we)
{
}
catch (Exception e)
{
}
finally
{
if (dataStream != null)
{
dataStream.Close();
}
}
}
HttpWebResponse resp = (HttpWebResponse)webRequest.GetResponse();
Stream resStream = resp.GetResponseStream();
StreamReader reader = new StreamReader(resStream);
ret = reader.ReadToEnd();
Logger.Debug(String.Format("response:\r\n{0}\r\n----------------------------", ret));
return ret;
}
니꼴라오
4월 15, 2022, 3:54오전
4
스트림으로 보낼 때 웹단에서
$_POST, Request.GetParameter, Request.Form 이런식으로 받을 수 없나요?
rkttu
4월 15, 2022, 4:07오전
5
클라이언트에서 보내는 데이터가 서버에 안들어올 수 있는 이유는 여러 가지가 있습니다. 단순히 서버 애플리케이션이 특정 언어를 사용하고 있기 때문만은 아닐 수 있습니다.
중간에 WAF가 동작하고 있거나, 프록시 연결이 껴있지는 않은지도 확인해보셔야 할 것 같습니다.
그리고 말씀하신 서버 측 코드가 무엇인지 정확한 설명이 필요해보입니다.
예를 들어 클래식 ASP의 경우 Galaxy Upload 같은 서드파티 컴포넌트를 이용하여 IIS가 보내온 멀티파트 인코딩을 분석하여 서버 측 디스크에 저장하는 보조 기능을 제공하는 처리기가 있어야 파일을 받을 수 있는데, 이와 같이 환경에 대한 설명이 누락되면 문제를 영영 찾을 수 없을 수도 있어서요.
rkttu
4월 15, 2022, 4:13오전
6
그리고 기존 질문 글을 삭제하고 싶은 이유가 있으실까요? 커뮤니티 행동강령에 위배되는 부분이 있는 것 같진 않습니다.
@니꼴라오 님~ 제가 매번 본문에 오타랑 소스코드 고쳐드리고 있는 것 아시죠!
질문하실 때 좀 더(완전 많이) 신경 쓰셔서 오타나 소스코드 부분도 보기 좋게 작성해서 글 올려주시면 좋을 것 같습니다.
지금 직면한 문제를 해결하는 것도 중요하지만 정성들여 컨텐츠를 작성해서 품질을 높여주시면 나중에 같은 문제로 찾아온 다른 분들도 쉽게 해결할 수 있습니다!
좀 더 다른분들의 피드백도 적극 수용해주시면서 많이 많이 성장하는 커뮤니티 활동 해주셨으면 좋겠습니다.
5개의 좋아요
이해한 문의내용
C# 클라이언트에서 php server로 post할 경우 php에서 넘어온 post값이 제대로 넘어 오지 않는다?
해당사항을 기준으로 테스트를 해보았습니다.
php server - laragon php 5.4.9
[c# 클라이언트]
using System.Net;
using System.IO;
using System.Collections.Specialized;
using System.Text.Json;
using System.Net.Http;
public string WebRequestJson(string url, byte[] byteArray)
{
Console.WriteLine(String.Format("request:\r\n{0}\r\n----------------------------", Encoding.Default.GetString(byteArray)));
string ret = string.Empty;
//byte[] byteArray = Encoding.UTF8.GetBytes(postData);
var webRequest = System.Net.WebRequest.Create(url) as HttpWebRequest;
if (webRequest != null)
{
webRequest.ContentType = "application/x-www-form-urlencoded;";
webRequest.ContentLength = byteArray.Length;
webRequest.Method = "POST";
Stream dataStream = null;
try
{
dataStream = webRequest.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
}
catch (WebException we)
{
}
catch (Exception e)
{
}
finally
{
if (dataStream != null)
{
dataStream.Close();
}
}
}
HttpWebResponse resp = (HttpWebResponse)webRequest.GetResponse();
Stream resStream = resp.GetResponseStream();
StreamReader reader = new StreamReader(resStream);
ret = reader.ReadToEnd();
Console.WriteLine(String.Format("response:\r\n{0}\r\n----------------------------", ret));
return ret;
}
var parameters = new Dictionary<string, string>();
parameters.Add("aaa", "1234");
parameters.Add("bbb", "5678");
var encodedContent = new FormUrlEncodedContent(parameters);
var byteContent = await encodedContent.ReadAsByteArrayAsync();
WebRequestJson("http://localhost/ReceivePostData.php", byteContent);
[php server(http://localhost/ReceivePostData.php )]
<?php echo $_POST['aaa']; ?>
<?php echo $_POST['bbb']; ?>
<?php
print_r($_GET);
print_r($_POST);
?>
3개의 좋아요