作者MOONY135 (谈无慾)
看板C_Sharp
标题[问题] c#登入api
时间Tue Oct 18 18:58:06 2016
大家好 最近刚要学call web api
以下是我的疑问
post使用的是64base Encode 送出
回传的值是json
https://gist.github.com/Aix-Shiao/bf7df4258cfb935fca06bafde3c14551
以上是我的code
string postData = "myjson";
myjson 是我将
{"account":"
[email protected]",
"password":"pass1234"}
这串json 丢入
https://www.base64encode.org/ 这个网址产生出来的
=======================
我想问说
sting postDate ->
byte[] postDataBytes ->
Convert.ToBase64String(postDataBytes)->
Convert.FromBase64String(returnValue);
不知道这样的转换逻辑是否有问题?
错误代码一直是无post资料
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.124.46.82
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1476788293.A.59C.html
※ 编辑: MOONY135 (59.124.46.82), 10/18/2016 18:59:25
1F:→ ssccg: 当然有问题,ToBase64String再FromBase64String不就转过去 10/18 20:58
2F:→ ssccg: 再转回来变成什麽都没做 10/18 20:58
3F:→ ssccg: 应该是把base64 string再转成byte(ASCII或UTF8都可) 10/18 21:02
byte[] postDataBytes = Encoding.UTF8.GetBytes(postData);
string returnValue = Convert.ToBase64String(postDataBytes);
byte[] ans = Encoding.UTF8.GetBytes(returnValue);
req.Method = "POST";
req.ContentLength = ans.Length;
Stream requestStream = req.GetRequestStream();
requestStream.Write(ans, 0, ans.Length);
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
StreamReader reader = new
StreamReader(response.GetResponseStream());
string returnString = reader.ReadToEnd();
response.Close();
4F:→ ssccg: 或requeststream再包StreamWriter直接传入base64 string 10/18 21:03
5F:→ ssccg: 另外跟你的问题没关系,纯粹好奇为什麽response能回json 10/18 21:13
6F:→ ssccg: request要把json多转一次base64? 设计这API是... 10/18 21:15
目前这样改还是回传错误指令 NOT POST....
卡一整天了 脑袋变得很笨
7F:→ ssccg: 这样是base64编码过的utf8编码的json资料这点是没问题的 10/18 22:07
8F:→ ssccg: 但是你打的web api的规格是不是这样,或是有没有错在别的地 10/18 22:08
9F:→ ssccg: 方就不能保证了 10/18 22:09
10F:→ Litfal: 你确定web api没错?先用postman或fiddler之类的丢丢看吧 10/18 23:26
WEB API没错 POSTMAN用过了
我知道错在哪边了
string returnValue = Convert.ToBase64String(postDataBytes);
byte[] ans = Encoding.UTF8.GetBytes(returnValue);
这边多转一次是脑残了
string postData = <-这一段其实我早用网页版的转成64BASE了
接下来只要转乘BYTE 就可以丢进REQUEST了
※ 编辑: MOONY135 (114.25.242.194), 10/19/2016 00:11:37
11F:→ ssccg: 我觉得你的问题不是在用程式多转一次,是先用手动转... 10/19 09:09
12F:→ MOONY135: 哈 自作孽 10/19 09:40