C# HttpWebRequest ,Post请求,有个cookie里面带了逗号 20C

创建CookieContainer的时候 有个cookie里面带了逗号
cookie 类似Wed, 20 Dec 2017 05:46:34 GMT
这种日期的 我用get的访问别的接口是没问题的 这个接口必须post,然后一直提示会话过期

6个回答

是不是你的cookie超过了时限

你的cookie超过了时限

fiddler抓包看下,是expired Wed, 20 Dec 2017 05:46:34 GMT 么,那么这个是过期的时间。你访问的时间在此之前么。

cookie时效过期,超时限,抓包测试

CookieContainer cookie 程序赋值,不是自动赋值的吧

用HttpUtility.UrlEncode(val, Encoding.UTF8)编码下就行了

上周刚好自己也遇到过类似问题

fiddler抓包看下具体的请求

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c# HttpWebRequest 为什么会给URL自动加?号
``` public String getHtml(String url, String data, String htmlEncode) { try { //设置模拟http访问参数 Uri uri = new Uri(url); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); request.UserAgent = "Mozilla/5.0"; request.Accept = "*/*"; request.Method = "POST"; request.Timeout = 40000; request.KeepAlive = true; request.AllowAutoRedirect = true; request.ContentType = "application/x-www-form-urlencoded"; if (!"".Equals(this.txt_cookie.Text)) { request.Headers.Add("Cookie", this.txt_cookie.Text); } Byte[] b = Encoding.ASCII.GetBytes(data); request.ContentLength = b.Length; Stream stream = request.GetRequestStream(); stream.Write(b, 0, b.Length); stream.Close(); StreamReader sr = new StreamReader(request.GetResponse().GetResponseStream(), Encoding.GetEncoding(htmlEncode)); String html = sr.ReadToEnd().Replace("\n","\r\n"); return html; } catch (Exception e) { loginfo(e.Message); //MessageBox.Show(e.Message); } return ""; } public void getInfo() { loginfo("正在获取Web信息,请稍等片刻........"); String exp = "/admin"; if (this.radb_s19.Checked) { exp = "debug=command&expression=%23res%3d%23context.get('com.opensymphony.xwork2.dispatcher.HttpServletResponse'),%23res.setCharacterEncoding(%22UTF-8%22),%23req%3d%23context.get('com.opensymphony.xwork2.dispatcher.HttpServletRequest'),%23res.getWriter().print(%22dir:%22),%23res.getWriter().println(%23req.getSession().getServletContext().getRealPath(%22/%22)),%23res.getWriter().flush(),%23res.getWriter().close()"; } String html = getHtml(this.txt_url.Text, exp, "UTF-8"); this.txt_info.Text = html; ``` 如果txt_url.Text为http://www.1.com/ String exp的内容问 /admin 程序会访问的地址则是http://www.1.com/?admin 我想知道这个?号是哪里来的。。。 能不能取消掉。。0 0。。 嘿嘿
C# 模拟post登陆后,关键cookie发送不出去,求帮助
想做一个登陆小米网站的程序,在使用post模拟登陆的时候,能够获取到登陆后的cookie,cookieContainer里面有3个域名。(.xiaomi.com)(account.xiaomi.com)(.account.xiaomi.com) 在.account.xiaomi.com中存在着关键的cookie,pwdToken和passToken都有存在着。但是使用这个cookieContainer,然后httpWebRequest的时候,用get方法获取https://account.xiaomi.com/pass/userInfo?userId=73896043 的时候,我用fiddler发现他只发送了account.xiaomi.com域名中的cookie,而没有发送.account.xiaomi.com中的cookie。导致进页面被认为没登陆,一直返回登陆页面。第一次做winform的程序,被这个问题困扰了好多天了,一直没能解决。 使用ie登陆的话,用httpwatch能看到他发送了.account.xiaomi.com中的cookie,为什么使用程序get的时候他就不发送.account.xiaomi.com中的cookie了。甚为纠结。。。 希望各位大大指点迷津。。。让我不要再纠结了。。。 private HttpWebResponse loginResponse; private StreamReader loginRespReader; private CookieContainer m_Cookie = new CookieContainer(); private void button1_Click(object sender, EventArgs e) { this.xiaomiLogin(); string str=this.loginRespReader.ReadToEnd(); HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://account.xiaomi.com/pass/userInfo?userId=174314059"); req.CookieContainer = new CookieContainer(); req.CookieContainer = m_Cookie; req.Method = "GET"; //req.ContentType = "application/x-www-form-urlencoded"; loginResponse = (HttpWebResponse)req.GetResponse(); loginRespReader = new StreamReader(loginResponse.GetResponseStream()); textBox1.Text = loginRespReader.ReadToEnd(); } private void xiaomiLogin() { string requestUriString = "https://account.xiaomi.com/pass/serviceLoginAuth2"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUriString); request.CookieContainer = new CookieContainer(); request.CookieContainer = m_Cookie; request.Method = "POST"; request.AllowAutoRedirect = true; request.ContentType = "application/x-www-form-urlencoded"; string s = this.quoteParas(paras); byte[] bytes = Encoding.UTF8.GetBytes("passToken=&user=13763114744&pwd=xiaomi123&callback=https%3A%2F%2Faccount.xiaomi.com&sid=passport&qs=%253Fsid%253Dpassport&hidden=&_sign=KKkRvCpZoDC%2BgLdeyOsdMhwV0Xg%3D"); request.ContentLength = bytes.Length; Stream requestStream = request.GetRequestStream(); requestStream.Write(bytes, 0, bytes.Length); this.loginResponse = (HttpWebResponse)request.GetResponse(); m_Cookie = request.CookieContainer; this.loginRespReader = new StreamReader(this.loginResponse.GetResponseStream()); }
C#https的post请求,发送的uri接收方接收的地址乱了
public string HttpPost(string Url, string postDataStr) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); //request.AllowAutoRedirect = false; //禁止自动重定向 request.Method = "POST"; request.Headers.Add("AK", "c74f6e81f3854e928a4e2633b9d55a89"); request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = Encoding.UTF8.GetByteCount(Url); request.CookieContainer = cookie; //cookie信息由CookieContainer自行维护 Stream myRequestStream = request.GetRequestStream(); using (StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312")))//gb2312 { myStreamWriter.Write(Url); myStreamWriter.Close(); } HttpWebResponse response = null; try { this.SetCertificatePolicy(); response = (HttpWebResponse)request.GetResponse(); } catch (System.Exception ex) { throw; } //获取重定向地址 //string url1 = response.Headers["Location"]; if (response != null) { Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); //MessageBox.Show(retString); myStreamReader.Close(); myResponseStream.Close(); return retString; } else { return "error"; //post请求返回为空 } } ``` 我发的:https://console-api-test.qibeitech.com/sign/productCheck/bindDevice?lockId=86812017491050&bikeId=http://ofo.so/plate/11000000&timestamp=1504487889209&sign=3c02b0dd1c2b5ba9df236b78e89c5916 他们接收的:AKc74f6e81f3854e928a4e2633b9d55a89bikeIdhttp://ofo.so/plate/11000000http://ofo.so/plate/11000000https://console-api-test.qibeitech.com/sign/productCheck/bindDevice?lockId86812017491050lockId86812017491050timestamp15044878892091504487889209dcc59608864511e79673163ea306a3 ``` 求帮助,小白一个,,之前没怎么做过网络通信的
c# 向服务器post数据的时候 如何把参数和cookie一起发送
``` System.Net.HttpWebRequest request; request = (System.Net.HttpWebRequest)WebRequest.Create("http:www.xxxx.com"); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded; charset=utf-8"; string paraUrlCoded = System.Web.HttpUtility.UrlEncode(textBox4.Text); paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode(textBox3.Text); byte[] payload; payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded); request.ContentLength = payload.Length; Stream writer = null; writer = request.GetRequestStream(); //将请求参数写入流 writer.Write(payload, 0, payload.Length); // 关闭请求流 writer.Close(); System.Net.HttpWebResponse response = null; // 获得响应流 response = (System.Net.HttpWebResponse)request.GetResponse(); System.IO.Stream s; s = response.GetResponseStream(); StreamReader reader = new StreamReader(s); string strValue = reader.ReadToEnd(); //如果返回数据比较大,可以选择循环读取 reader.Close(); ``` 如何发送cookie呢? 下面是火狐浏览器存储的cookie PHPSESSID:"bjcjcq1q630hkmpjj5a65otev2" _csrf:"91e0c51dd25fe28d57dcdb673c2b48a48ae843a820390ab8d8cc3f62ab9982b1a:2:{i:0;s:5:"_csrf";i:1;s:32:"TMuJAI2U_7A0qTdkNOKpTroujAdlL4s9";}"
c#模拟登陆 返回500错误
我想用c#模拟登陆一个网站,然后再对网站进行操作,post参数也很简单,但是为什么返回500错误呢? ![图片说明](https://img-ask.csdn.net/upload/201603/31/1459414065_362884.jpg) ![图片说明](https://img-ask.csdn.net/upload/201603/31/1459414075_702532.png) ![图片说明](https://img-ask.csdn.net/upload/201603/31/1459414082_979129.jpg) ![图片说明](https://img-ask.csdn.net/upload/201603/31/1459414093_528164.png) ![图片说明](https://img-ask.csdn.net/upload/201603/31/1459414100_67423.png) ``` using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading; namespace emulateLoginBaidu { class HTMLHelper { public static CookieContainer GetCooKie(string loginUrl, string postdata, HttpHeader header) { HttpWebRequest request = null; HttpWebResponse response = null; try { CookieContainer cc = new CookieContainer(); request = (HttpWebRequest)WebRequest.Create(loginUrl); request.Method = header.method; request.ContentType = header.contentType; byte[] postdatabyte = Encoding.UTF8.GetBytes(postdata); request.ContentLength = postdatabyte.Length; request.AllowAutoRedirect = false; request.CookieContainer = cc; request.KeepAlive = true; //提交请求 Stream stream; stream = request.GetRequestStream(); stream.Write(postdatabyte, 0, postdatabyte.Length); stream.Close(); //接收响应 response = (HttpWebResponse)request.GetResponse(); response.Cookies = request.CookieContainer.GetCookies(request.RequestUri); CookieCollection cook = response.Cookies; //Cookie字符串格式 string strcrook = request.CookieContainer.GetCookieHeader(request.RequestUri); return cc; } catch (Exception ex) { throw ex; } } /// <summary> /// 获取html /// </summary> /// <param name="getUrl"></param> /// <param name="cookieContainer"></param> /// <param name="header"></param> /// <returns></returns> public static string GetHtml(string getUrl, CookieContainer cookieContainer, HttpHeader header) { Thread.Sleep(1000); HttpWebRequest httpWebRequest = null; HttpWebResponse httpWebResponse = null; try { httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(getUrl); httpWebRequest.CookieContainer = cookieContainer; httpWebRequest.ContentType = header.contentType; httpWebRequest.ServicePoint.ConnectionLimit = header.maxTry; httpWebRequest.Referer = getUrl; httpWebRequest.Accept = header.accept; httpWebRequest.UserAgent = header.userAgent; httpWebRequest.Method = "GET"; httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); Stream responseStream = httpWebResponse.GetResponseStream(); StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8); string html = streamReader.ReadToEnd(); streamReader.Close(); responseStream.Close(); httpWebRequest.Abort(); httpWebResponse.Close(); return html; } catch (Exception e) { if (httpWebRequest != null) httpWebRequest.Abort(); if (httpWebResponse != null) httpWebResponse.Close(); return string.Empty; } } } public class HttpHeader { public string contentType { get; set; } public string accept { get; set; } public string userAgent { get; set; } public string method { get; set; } public int maxTry { get; set; } } } ``` 测试代码: ``` try { HttpHeader header = new HttpHeader(); header.accept = @"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; header.contentType = "application/x-www-form-urlencoded"; header.method = "POST"; header.userAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0"; header.maxTry = 300; CookieContainer cookieContainer = new CookieContainer(); cookieContainer = HTMLHelper.GetCooKie("https://www.wish.com/api/email-login", "email=oxvbgzo66627404%40163.com&password=ai49425&_buckets=&_experiments=", header); string html = HTMLHelper.GetHtml("https://www.wish.com", cookieContainer, header); MessageBox.Show(html); } catch (Exception ee) { MessageBox.Show(ee.Message); } ```
C#模拟登录中国联通获取用户通话详单
我写一个根据手机号码和服务密码自动登录中国联通官网 然后获取通话详单json的类,第一步模拟登录返回的数据没有问题 但是第二步获取通话详单的时候总是报500错误 有人知道解决方法吗? public static string GetCalldetails(string userName, string password) { string content=""; CookieContainer cookie = new CookieContainer(); string postUrl = "https://uac.10010.com/portal/Service/MallLogin?callback=jQuery17202691898950318097_1403425938090&redirectURL=http://www.10010.com&userName="+userName+"&password="+password+"&pwdType=01&productType=01&redirectType=01&rememberMe=1"; HttpWebRequest httpRequset = (HttpWebRequest)WebRequest.Create(postUrl); httpRequset.CookieContainer = cookie;//设置cookie httpRequset.Method = "GET"; httpRequset.ContentType = "text/html;charset=UTF-8"; HttpWebResponse httpresponse = (HttpWebResponse)httpRequset.GetResponse(); Stream myResponseStream = httpresponse.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); if (Convert.ToInt32(httpresponse.StatusCode) == 200) { if (retString.Contains("resultCode:\"0000\"")) { string billurl = "http://iservice.10010.com/e3/static/query/callDetail?_=1450840337718&menuid=000100030001"; string strdata = "pageNo=1&pageSize=100&beginDate=2015-12-01&endDate=2015-12-23"; byte[] byteArray = Encoding.UTF8.GetBytes(strdata); //string billurl = "http://iservice.10010.com/e3/static/check/checklogin/?_=1450857473494"; // HttpWebRequest Requset = (HttpWebRequest)WebRequest.Create(billurl); HttpWebRequest Requset = (HttpWebRequest)WebRequest.Create(billurl); Requset.Method = "POST"; Requset.CookieContainer = cookie; Requset.ContentType = "application/x-www-form-urlencoded"; Stream stream = Requset.GetRequestStream(); using (StreamWriter myStreamWriter = new StreamWriter(stream, Encoding.GetEncoding("UTF-8"))) { myStreamWriter.Write(byteArray); } HttpWebResponse response = (HttpWebResponse)Requset.GetResponse(); //if (Convert.ToInt32(response.StatusCode) == 200) //{ using (Stream responsestream = response.GetResponseStream()) { using (StreamReader sr = new StreamReader(responsestream, Encoding.GetEncoding("utf-8"))) { content = sr.ReadToEnd(); //return content; } } return content; } else { return "登录失败:" + retString + ""; } } else { int num = Convert.ToInt32(httpresponse.StatusCode); return "数据传输失败:" + num+""; } }
winfrom 通过multipart/form-data方式 上传EXCEL文件,发生错误
static void FileUpload(string m_fileNamePath, string wenjianmin) { string Boundary = "wojuedezhgexiangmushigekeng"; //构造请求参数 Dictionary<string, string> PostInfo = new Dictionary<string, string>(); //PostInfo.Add("sequenceNo ", "A0002"); //PostInfo.Add("type", "application/vnd.ms-excel"); //PostInfo.Add("file", ""); //PostInfo.Add("filename", wenjianmin); //构造POST请求体 StringBuilder PostContent = new StringBuilder("--" + Boundary); byte[] ContentEnd = Encoding.UTF8.GetBytes("--" + Boundary + "--\r\n");//请求体末尾,后面会用到 //组成普通参数信息 foreach (KeyValuePair<string, string> item in PostInfo) { PostContent.Append("\r\n") .Append("Content-Disposition: form-data; name=\"") .Append(item.Key + "\"").Append("\r\n") .Append("\r\n").Append(item.Value).Append("\r\n") .Append("--").Append(Boundary); } //转换为二进制数组,后面会用到 byte[] PostContentByte = Encoding.UTF8.GetBytes(PostContent.ToString()); //文件信息 byte[] UpdateFile = File2Bytes(m_fileNamePath);//转换为二进制 StringBuilder FileContent = new StringBuilder(); FileContent.Append("\r\n") .Append("Content-Disposition:form-data; name=\"") .Append("flie" + "\"; ") .Append("filename=\"") .Append(wenjianmin + "\"") .Append("\r\n") .Append("Content-Type: application/vnd.ms-excel") .Append("\r\n") .Append("\r\n"); byte[] FileContentByte = Encoding.UTF8.GetBytes(FileContent.ToString()); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(m_address); request.Method = "POST"; request.Timeout = 100000; //这里确定了分隔符是什么 request.Headers.Add("Cookie", "JSESSIONID=19FCE6CF428E78732830248719E3836A"); //request.Headers.Add("Accept-Encoding", " gzip, deflate"); request.ContentType = "multipart/form-data;boundary=" + Boundary; //request.Cookie = ""; //定义请求流 Stream myRequestStream = request.GetRequestStream(); myRequestStream.Write(PostContentByte, 0, PostContentByte.Length);//写入参数 myRequestStream.Write(FileContentByte, 0, FileContentByte.Length);//写入文件信息 myRequestStream.Write(UpdateFile, 0, UpdateFile.Length);//文件写入请求流中 myRequestStream.Write(ContentEnd, 0, ContentEnd.Length);//写入结尾 HttpWebResponse res; try { res = (HttpWebResponse)request.GetResponse(); } catch (WebException ex) { res = (HttpWebResponse)ex.Response; } //StreamReader sr = new StreamReader(res.GetResponseStream(), strEncode); //strHtml = sr.ReadToEnd(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //获取返回值 Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); string retString = myStreamReader.ReadToEnd(); myRequestStream.Close(); myStreamReader.Close(); myResponseStream.Close(); } 以下是抓包截图 ![图片说明](https://img-ask.csdn.net/upload/202001/09/1578548657_696695.png) 返回错误信息 {"timestamp":"2020-01-09 13:40:35","status":500,"error":"Internal Server Error","message":"Failed to parse multipart servlet request; nested exception is org.apache.commons.fileupload.FileUploadBase$IOFileUploadException: Processing of multipart/form-data request failed. Stream ended unexpectedly","path":"/lab/calibrator/uploadReport"}
C# 如何使用 HttpWebReques 编写baidu(百度)自动登录,请高手帮忙看看,如何解决?
下面是我写的代码,不知道那里出错,实现不了登录,请帮忙解决...先说声谢谢啦代码: ---------- string postdata = "ppui_logintime=482599&charset=utf-8&codestring=&token=e80e24119525675ba6ee9e0e15c6a8be&isPhone=false&index=0&u=&safeflg=0&staticpage=http%3A%2F%2Fwww.baidu.com%2Fcache%2Fuser%2Fhtml%2Fjump.html&loginType=1&tpl=mn&callback=parent.bdPass.api.login._postCallback&username=xx&password=xx&verifycode=&mem_pass=on"; string url = "https://passport.baidu.com/v2/api/?login"; //准备发送请求 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); Encoding myEncoding = Encoding.GetEncoding("UTF-8"); byte[] data = myEncoding.GetBytes(postdata); CookieContainer cc=new CookieContainer(); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.Accept = "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"; request.KeepAlive = true; request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E))"; request.CookieContainer=cc; request.ContentLength = data.Length; // //发送数据 Stream webStream = request.GetRequestStream(); webStream.Write(data, 0, data.Length); //webStream.Close(); webStream.Flush(); //获取返回数据 HttpWebResponse webResponse = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(webResponse.GetResponseStream(), myEncoding ); postdata = reader.ReadToEnd(); Console.WriteLine(postdata); webResponse.Close(); postdata.Trim(); //Cookies CookieContainer cs = new System.Net.CookieContainer(); System.Net.CookieCollection cc1 = cc.GetCookies(new Uri("https://passport.baidu.com/v2/api/?login")); foreach (System.Net.Cookie item in cc1) { Console.WriteLine(item.Name); Console.WriteLine(item.Value); } webBrowser1.Navigate("www.baidu.com");
远程服务器返回错误: (401) 未经授权
c# 模拟登陆带验证码网站,思路是先请求验证码并记录cookie,登陆网站(请求的cookie用请求验证码保存的cookie),始终不能成功,提示未经授权。 请求验证码代码如下: public static void GetCheckCode(string url, string path) { HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); req.ServicePoint.Expect100Continue = false; req.Method = "GET"; req.KeepAlive = true; req.ContentType = "image/png"; req.CookieContainer = new CookieContainer(); HttpWebResponse rsp = (HttpWebResponse)req.GetResponse(); theCC = req.CookieContainer; System.IO.Stream stream = null; try { // 以字符流的方式读取HTTP响应 stream = rsp.GetResponseStream(); System.Drawing.Image.FromStream(stream).Save(path); } finally { // 释放资源 if (stream != null) stream.Close(); if (rsp != null) rsp.Close(); } } 登陆主要代码如下: HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); //配置请求header req.Headers.Add(HttpRequestHeader.AcceptCharset, "GBK,utf-8;q=0.7,*;q=0.3"); req.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate,sdch"); req.Headers.Add(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.8"); req.Accept = "application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"; req.KeepAlive = true; req.Referer = referer; req.Headers.Add(HttpRequestHeader.CacheControl, "max-age=0"); req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/534.7 (KHTML, like Gecko) Chrome/7.0.517.5 Safari/534.7"; req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; req.AllowAutoRedirect = true; //设置cookieContainer用来接收cookie req.CookieContainer = theCC; //返回请求 res = (HttpWebResponse)req.GetResponse();
发送http请求返回{"retcode":103,"errmsg":""}
我模仿一个QQ登录的按钮功能 为什么返回的{"retcode":103,"errmsg":""} 代码如下: try { //发送请求地址 string url2 = ptsig; string strHtmlContent2 = "";//接收返回数据 HttpWebRequest webRequest2 = WebRequest.Create(url2) as HttpWebRequest;//发送请求 webRequest2.Method = "GET";//请求方法 webRequest2.Referer = "http://d.web2.qq.com/proxy.html";//页面链接 webRequest2.ContentType = "application/x-www-form-urlencoded";//内容类型 //webRequest2.Timeout = 2000;//响应时间 webRequest2.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)";//客户端浏览器的原始用户代理信息 webRequest2.CookieContainer = cookies;//获取cookie HttpWebResponse response2 = (HttpWebResponse)webRequest2.GetResponse();//获得服务器响应对象 Stream resStream2 = response2.GetResponseStream();//转成流对象 StreamReader sr2 = new StreamReader(resStream2, Encoding.UTF8);//创建只读流对象 strHtmlContent2 = sr2.ReadToEnd(); response2.Close();//关闭流对象 webRequest2.Abort();//关闭请求 } catch (Exception e) { Msg = "qq:" + _qqno + "登陆" + e.Message; return false; } try { //发送请求地址 string url2 = "http://d.web2.qq.com/channel/login2"; string strHtmlContent2 = "";//接收返回数据 HttpWebRequest webRequest2 = WebRequest.Create(url2) as HttpWebRequest;//发送请求 webRequest2.Method = "POST";//请求方法 //webRequest2.Referer = "http://d.web2.qq.com/proxy.html";//页面链接 webRequest2.Referer = "http://d.web2.qq.com/proxy.html?v=20110331002&callback=1&id=2"; webRequest2.ContentType = "application/x-www-form-urlencoded";//内容类型 //webRequest2.Timeout = 2000;//响应时间 webRequest2.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)";//客户端浏览器的原始用户代理信息 webRequest2.CookieContainer = cookies;//获取cookie //上传数据 string postData = "r={\"status\":\"online\",\"ptwebqq\":\"" + ptwebqq + "\",\"passwd_sig\":\"\",\"clientid\":\"" + clientid + "\",\"psessionid\":null}"; // Encode the data byte[] encodedBytes = Encoding.UTF8.GetBytes(postData);//转成二进制数组 webRequest2.ContentLength = encodedBytes.Length;//字节数 // Write encoded data into request stream Stream requestStream = webRequest2.GetRequestStream();//转成流对象 requestStream.Write(encodedBytes, 0, encodedBytes.Length); requestStream.Close();//关闭流并释放资源 HttpWebResponse response2 = (HttpWebResponse)webRequest2.GetResponse();//获得服务器响应对象 Stream resStream2 = response2.GetResponseStream();//转成流对象 StreamReader sr2 = new StreamReader(resStream2, Encoding.UTF8);//创建只读流对象 strHtmlContent2 = sr2.ReadToEnd(); response2.Close();//关闭流 webRequest2.Abort();//关闭请求 if (strHtmlContent2.IndexOf("vfwebqq") > -1) { //获取第二次登录用户进行QQ号的操作 vfwebqq = new Regex("vfwebqq\":\"[^\"]+").Match(strHtmlContent2).Value.Replace("vfwebqq\":\"", ""); psessionid = new Regex("psessionid\":\"[^\"]+").Match(strHtmlContent2).Value.Replace("psessionid\":\"", ""); Msg = "qq:" + _qqno + "登陆webqq成功"; return true; } else { Msg = "qq:" + _qqno + "登陆受限"; return false; } } catch (Exception e) { Msg = "qq:" + _qqno + "登陆" + e.Message; return false; }
模拟登录后访问,CookieContainer访问时需要变更的问题。
模拟登录后访问,CookieContainer访问时需要变更的问题。 用C# 做一个模拟 登录网站 访问页面的程序。原本 向被访网站提交post相关 用户密码后,把cookie保存到CookieContainer中,再访问网站页面没问题。后因被访页面 多了一个写入和读取cookie的操作,原container中的cookie内容,在访问中无法变更。导致无法访问 登录后的内容。 不知道我表达的,是否清楚。 代码大致是这样的。 如果登录后保存的cookieContainer,在浏览页面时再次修改或添加,应该就能通过了。 现在情况是,只用登录后保存container去访问被页面,因为被访页面又写入和读取cookie,原container无法变更,而导致浏览页面失败。本人菜鸟,请老师指教,最好有代码了。 比如被访页面加了这个写入和读取cookie的代码。原container就读取失败了。 Response.Cookies["Usert"]["tt"] = "ok"; if (Request.Cookies["Usert"]["tt"] == "ok") { 通过; } else { 失改; } protected void Button_Cai_Click(object sender, System.EventArgs e) { string indata = "username=aabbi&password=123"; string outdata = ""; CookieContainer myCookieContainer = new CookieContainer(); //新建一个CookieContainer来存放Cookie集合 HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.xxx.com/login.php?c=login"); //新建一个HttpWebRequest myHttpWebRequest.ContentType = "application/x-www-form-urlencoded"; myHttpWebRequest.ContentLength = indata.Length; myHttpWebRequest.Method = "POST"; // myHttpWebRequest.KeepAlive = false;//--- myHttpWebRequest.CookieContainer = myCookieContainer; //设置HttpWebRequest的CookieContainer为刚才建立的那个myCookieContainer Stream myRequestStream = myHttpWebRequest.GetRequestStream(); StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312")); myStreamWriter.Write(indata); //把数据写入HttpWebRequest的Request流 myStreamWriter.Close(); myRequestStream.Close(); //关闭打开对象 HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); //新建一个HttpWebResponse myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri); //获取一个包含url的Cookie集合的CookieCollection Stream myResponseStream = myHttpWebResponse.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312")); outdata = myStreamReader.ReadToEnd(); //把数据从HttpWebResponse的Response流中读出 myStreamReader.Close(); myResponseStream.Close(); AddCompNew(i.ToString(), myCookieContainer); Download("http://www.xxx.com/view/123.htm",myCookieContainer); } public static string Download(string URL, CookieContainer myCookieContainer)//UTF-8 gb2312 { Stream strmPage = null; StreamReader srPage = null; string HTML = null; try { HttpWebRequest wrqPage = (HttpWebRequest)WebRequest.Create(URL);//根据制定的URL字符构造一个网络请求 // wrqPage.UserAgent = "Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1)";//设定UserAgent的属性 // wrqPage.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)";//设定UserAgent的属性 wrqPage.Method = "get"; wrqPage.CookieContainer = myCookieContainer;//* WebResponse wrpPage = wrqPage.GetResponse();//获取网络相应 strmPage = wrpPage.GetResponseStream();//获取网络相应的数据流 //srPage = new StreamReader(strmPage, Encoding.GetEncoding("gb2312")); //将获取的数据流构造为一个StreamReader,用来读取流的内容 srPage = new StreamReader(strmPage, System.Text.Encoding.GetEncoding("gb2312"));//将获取的数据流构造为一个StreamReader,用来读取流的内容 HTML = srPage.ReadToEnd(); //使用StreamReader读取到流的末尾,并将读取的内容存储到HTML变量中 strmPage.Close(); return HTML; } catch (Exception) { if (strmPage != null) { strmPage.Close(); } return HTML; } } 我没有币,只能谢谢了。
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
python自动下载图片
近日闲来无事,总有一种无形的力量萦绕在朕身边,让朕精神涣散,昏昏欲睡。 可是,像朕这么有职业操守的社畜怎么能在上班期间睡瞌睡呢,我不禁陷入了沉思。。。。 突然旁边的IOS同事问:‘嘿,兄弟,我发现一个网站的图片很有意思啊,能不能帮我保存下来提升我的开发灵感?’ 作为一个坚强的社畜怎么能说自己不行呢,当时朕就不假思索的答应:‘oh, It’s simple. Wait for me for a ...
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
C++(数据结构与算法):62---搜索树(二叉搜索树、索引二叉搜索树)
一、搜索树的复杂度分析 本文考察二叉搜索树和索引二叉搜索树 二叉搜索树的渐进性能可以和跳表媲美: 查找、插入、删除操作所需的平均时间为Θ(logn) 查找、插入、删除操作的最坏情况的时间为Θ(n) 元素按升序输出时所需时间为Θ(n) 虽然在最坏情况下的查找、插入、删除操作,散列表和二叉搜索树的时间性能相同,但是散列表在最好的情况下具有超级性能Θ(1) 不过,对于一个指定的关键...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
leetcode88. 合并两个有序数组
给定两个有序整数数组nums1 和 nums2,将 nums2 合并到nums1中,使得num1 成为一个有序数组。 说明: 初始化nums1 和 nums2 的元素数量分别为m 和 n。 你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。 示例: 输入: nums1 = [1,2,3,0,0,0], m = 3 nums2 = ...
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
点击上方蓝字设为星标下面开始今天的学习~今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。1、no code 项目地址:https://github.com/kelseyhight...
Python全栈 Linux基础之3.Linux常用命令
Linux对文件(包括目录)有很多常用命令,可以加快开发效率:ls是列出当前目录下的文件列表,选项有-a、-l、-h,还可以使用通配符;c功能是跳转目录,可以使用相对路径和绝对路径;mkdir命令创建一个新的目录,有-p选项,rm删除文件或目录,有-f、-r选项;cp用于复制文件,有-i、-r选项,tree命令可以将目录结构显示出来(树状显示),有-d选项,mv用来移动文件/目录,有-i选项;cat查看文件内容,more分屏显示文件内容,grep搜索内容;>、>>将执行结果重定向到一个文件;|用于管道输出。
​两年前不知如何编写代码的我,现在是一名人工智能工程师
全文共3526字,预计学习时长11分钟 图源:Unsplash 经常有小伙伴私信给小芯,我没有编程基础,不会写代码,如何进入AI行业呢?还能赶上AI浪潮吗? 任何时候努力都不算晚。 下面,小芯就给大家讲一个朋友的真实故事,希望能给那些处于迷茫与徘徊中的小伙伴们一丝启发。(下文以第一人称叙述) 图源:Unsplash 正如Elsa所说,职业转换是...
立即提问