.NET 위 챗 공공 플랫폼 업로드 멀티미디어 파일 다운로드 실현
/// <SUMMARY>
/// ,
/// </SUMMARY>
/// <PARAM name="ACCESS_TOKEN"></PARAM>
/// <PARAM name="MEDIA_ID"></PARAM>
/// <RETURNS></RETURNS>
public string GetMultimedia(string ACCESS_TOKEN, string MEDIA_ID)
{
string file = string.Empty;
string content = string.Empty;
string strpath = string.Empty;
string savepath = string.Empty;
string stUrl = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token=" + ACCESS_TOKEN + "&media_id=" + MEDIA_ID;
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(stUrl);
req.Method = "GET";
using (WebResponse wr = req.GetResponse())
{
HttpWebResponse myResponse = (HttpWebResponse)req.GetResponse();
strpath = myResponse.ResponseUri.ToString();
WriteLog(" ://" + myResponse.ContentType);
WebClient mywebclient = new WebClient();
savepath = Server.MapPath("image") + "\\" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + (new Random()).Next().ToString().Substring(0, 4) + ".jpg";
WriteLog(" ://" + savepath);
try
{
mywebclient.DownloadFile(strpath, savepath);
file = savepath;
}
catch (Exception ex)
{
savepath = ex.ToString();
}
}
return file;
}
위의 두 매개 변 수 는 이해 하기 쉽 습 니 다.첫 번 째 는 ACCESS 입 니 다.TOKEN,전에 많이 말 했 습 니 다.두 번 째 는 위 챗 서버 에 있 는 자원 id,즉 미디어 ID 입 니 다.우리 가 위 챗 서버 에 있 는 자원 을 다운로드 하려 면 id 를 알 아야 지.하지만 MEDIAID 는 또 어떻게 생 겼 을까요?저 는 먼저 이전의 메시지 실체 류 를 개조 하여 MediaId 속성 을 추가 하 겠 습 니 다.
class wxmessage
{
public string FromUserName { get; set; }
public string ToUserName { get; set; }
public string MsgType { get; set; }
public string EventName { get; set; }
public string Content { get; set; }
public string Recognition { get; set; }
public string MediaId { get; set; }
public string EventKey { get; set; }
}
그리고 GetWxMessage()를 개조 하여 MediaId 에 값 을 부여 합 니 다.
private wxmessage GetWxMessage()
{
wxmessage wx = new wxmessage();
StreamReader str = new StreamReader(Request.InputStream, System.Text.Encoding.UTF8);
XmlDocument xml = new XmlDocument();
xml.Load(str);
wx.ToUserName = xml.SelectSingleNode("xml").SelectSingleNode("ToUserName").InnerText;
wx.FromUserName = xml.SelectSingleNode("xml").SelectSingleNode("FromUserName").InnerText;
wx.MsgType = xml.SelectSingleNode("xml").SelectSingleNode("MsgType").InnerText;
if (wx.MsgType.Trim() == "text")
{
wx.Content = xml.SelectSingleNode("xml").SelectSingleNode("Content").InnerText;
}
if (wx.MsgType.Trim() == "event")
{
wx.EventName = xml.SelectSingleNode("xml").SelectSingleNode("Event").InnerText;
wx.EventKey = xml.SelectSingleNode("xml").SelectSingleNode("EventKey").InnerText;
}
if (wx.MsgType.Trim() == "voice")
{
wx.Recognition = xml.SelectSingleNode("xml").SelectSingleNode("Recognition").InnerText;
}
if (wx.MsgType.Trim() == "image")
{
wx.MediaId = xml.SelectSingleNode("xml").SelectSingleNode("MediaId").InnerText;
}
return wx;
}
만약 에 우리 가 메시지 가 받 아들 인 코드 를 수정 하면 고객 이 위 챗 플랫폼 에 사진 을 보 내 고 프로그램 이 그림 을 검 측 한 다음 에 MediaId 에 따라 GetMultimedia 방법 으로 그림 을 자신의 서버 에 다운로드 할 수 있 습 니 다.뒷 일 이 잖 아,하고 싶 은 대로 해.방금 의 예 는 사용자(관심 자)인 것 같 습 니 다.그림 을 보 낸 다음 에 위 챗 플랫폼 을 통 해 저희 서버 에 들 어 왔 습 니 다.또 다른 상황 이 있 습 니 다.사용자 가 사용자 이름 을 보 냈 습 니 다.예 를 들 어'hemeng'입 니 다.그리고 저 는 서버 에 존재 하 는 hemeng 프로필 사진 을 사용자 에 게 피드백 해 야 합 니 다.어떻게 해 야 합 니까?어떻게 우리 의 사진 을 위 챗 플랫폼 에 전송 한 후에 사용자 에 게 전달 합 니까?우 리 는 업로드 하 는 방법 을 사용 했다.
/// <SUMMARY>
/// , MediaId
/// </SUMMARY>
/// <PARAM name="ACCESS_TOKEN"></PARAM>
/// <PARAM name="Type"></PARAM>
/// <RETURNS></RETURNS>
public string UploadMultimedia(string ACCESS_TOKEN, string Type)
{
string result = "";
string wxurl = "http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token=" + ACCESS_TOKEN + "&type=" + Type;
string filepath = Server.MapPath("image") + "\\hemeng80.jpg";( )
WriteLog(" :" + filepath);
WebClient myWebClient = new WebClient();
myWebClient.Credentials = CredentialCache.DefaultCredentials;
try
{
byte[] responseArray = myWebClient.UploadFile(wxurl, "POST", filepath);
result = System.Text.Encoding.Default.GetString(responseArray, 0, responseArray.Length);
WriteLog(" result:" + result);
UploadMM _mode = JsonHelper.ParseFromJson<UPLOADMM>(result);
result = _mode.media_id;
}
catch (Exception ex)
{
result = "Error:" + ex.Message;
}
WriteLog(" MediaId:" + result);
return result;
}
두 번 째 매개 변 수 는 그림'image'라면 위 챗 문 서 를 참조 할 수 있 습 니 다.함수 의 반환 값 은 MediaId 입 니 다.그러면 그림 을 보 내 는 함 수 를 이용 하여 고객 에 게 보 낼 수 있 습 니 다.그림 을 보 내 는 함 수 는 다음 과 같 습 니 다.
protected string sendPicTextMessage(Msg _mode, string MediaId)
{
string res = string.Format(@"<xml>
<ToUserName><![CDATA[{0}]]></ToUserName>
<FromUserName><![CDATA[{1}]]></FromUserName>
<CreateTime>{2}</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<Image>
<MediaId><![CDATA[{3}]]></MediaId>
</Image>
</xml> ",
_mode.FromUserName, _mode.ToUserName, DateTime.Now, MediaId);
return res;
}
다른 동 영상 도 음성 조작 이 비슷 해 더 이상 소개 하지 않 겠 습 니 다.이런 지식 이 있 으 면 우 리 는 많은 응용 을 할 수 있 습 니까?물론 긍정 적 이지 만 우리 의 코드 는 최적화 되 지 않 고 구조 도 합 리 적 이지 않 으 며 조급해 하지 않 습 니 다.우 리 는 점차적으로 소개 할 것 입 니 다.왜냐하면 우 리 는 아직 위 챗 의 강력 한 기능 을 완전히 이해 하지 못 했 기 때 문 입 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio 2017에서 SQLite를 사용한 Windows Forms 앱 개발Visual Studio 2017에서 SQLite를 사용하여 Windows Forms 앱을 개발해 보았습니다. 아직 서버 탐색기나 TableAdaptor를 사용한 GUI에서의 개발에는 대응하지 않는 것 같습니다. 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.