Skip to content

Commit d080487

Browse files
authored
Merge pull request #21 from Armink-Tech/master
【完善】新用户登录异常处理
2 parents d71a8cc + 33cd7a6 commit d080487

File tree

2 files changed

+36
-21
lines changed

2 files changed

+36
-21
lines changed

src/main/java/com/meteor/wechatbc/entitiy/session/BaseRequest.java

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import lombok.Data;
77
import lombok.ToString;
88
import okhttp3.Cookie;
9+
import org.apache.logging.log4j.LogManager;
910
import org.w3c.dom.Document;
1011
import org.w3c.dom.Element;
1112
import org.w3c.dom.NodeList;
@@ -49,26 +50,36 @@ public BaseRequest(String xmlData){
4950
try {
5051
builder = factory.newDocumentBuilder();
5152
Document document = builder.parse(new ByteArrayInputStream(xmlData.getBytes()));
52-
NodeList skeyList = document.getElementsByTagName("skey");
53-
if (skeyList.getLength() > 0) {
54-
Element skeyElement = (Element) skeyList.item(0);
55-
this.skey = skeyElement.getTextContent();;
56-
}
57-
NodeList wxsidList = document.getElementsByTagName("wxsid");
58-
if (wxsidList.getLength() > 0) {
59-
Element wxsidElement = (Element) wxsidList.item(0);
60-
this.sid = wxsidElement.getTextContent();
61-
}
62-
NodeList wxuniList = document.getElementsByTagName("wxuin");
63-
if (wxsidList.getLength() > 0) {
64-
Element wxuniElement = (Element) wxuniList.item(0);
65-
this.uin = wxuniElement.getTextContent();
66-
}
67-
NodeList passTicketList = document.getElementsByTagName("pass_ticket");
68-
if (passTicketList.getLength() > 0) {
69-
Element passTicketElement = (Element) passTicketList.item(0);
70-
this.passTicket = passTicketElement.getTextContent();
53+
54+
Element errorElement = (Element) document.getElementsByTagName("error").item(0);
55+
if (errorElement == null) {
56+
NodeList skeyList = document.getElementsByTagName("skey");
57+
if (skeyList.getLength() > 0) {
58+
Element skeyElement = (Element) skeyList.item(0);
59+
this.skey = skeyElement.getTextContent();;
60+
}
61+
NodeList wxsidList = document.getElementsByTagName("wxsid");
62+
if (wxsidList.getLength() > 0) {
63+
Element wxsidElement = (Element) wxsidList.item(0);
64+
this.sid = wxsidElement.getTextContent();
65+
}
66+
NodeList wxuniList = document.getElementsByTagName("wxuin");
67+
if (wxsidList.getLength() > 0) {
68+
Element wxuniElement = (Element) wxuniList.item(0);
69+
this.uin = wxuniElement.getTextContent();
70+
}
71+
NodeList passTicketList = document.getElementsByTagName("pass_ticket");
72+
if (passTicketList.getLength() > 0) {
73+
Element passTicketElement = (Element) passTicketList.item(0);
74+
this.passTicket = passTicketElement.getTextContent();
75+
}
76+
} else {
77+
String ret = errorElement.getElementsByTagName("ret").item(0).getTextContent();
78+
String message = errorElement.getElementsByTagName("message").item(0).getTextContent();
79+
LogManager.getLogger("BASE-REQUEST").error("登录失败:" + message + " CODE: " + ret);
80+
throw new RuntimeException();
7181
}
82+
7283
} catch (ParserConfigurationException e) {
7384
throw new RuntimeException(e);
7485
} catch (IOException e) {

src/main/java/com/meteor/wechatbc/launch/login/WeChatLogin.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,16 @@ private BaseRequest getLoginInfo(QRCodeResponse qrCodeResponse) {
118118
// 设置登录设备ID
119119
baseRequest.setDeviceId(BaseConfig.getDeviceId());
120120

121-
Cookie ck = cookies.get(0);
121+
String baseDomain = "wx.qq.com";
122+
if (!cookies.isEmpty()) {
123+
Cookie ck = cookies.get(0);
124+
baseDomain = ck.domain();
125+
}
122126

123127
// 获取cookie的 domain 所属域名
124128
URL.setBASE_URL(new HttpUrl.Builder()
125129
.scheme("https")
126-
.host(ck.domain())
130+
.host(baseDomain)
127131
.build());
128132

129133
for (Cookie cookie : cookies) {

0 commit comments

Comments
 (0)