OSDN Git Service

まちBBSで削除レスがあるレス番号とスレの件数がずれる不具合を修正
[gikonavigoeson/gikonavi.git] / Belib.pas
index bbf3cda..5c16a0a 100644 (file)
--- a/Belib.pas
+++ b/Belib.pas
@@ -173,7 +173,8 @@ var
        UserAgent: string;
     Header: string;
        cb: DWORD;
-       Delim: Integer;
+       Index: DWORD;
+//     Delim: Integer;
     body: string;
 begin
        FSession := TBelibSession.Create;
@@ -201,23 +202,27 @@ begin
                        if not Assigned(hRequest) then
                                MakeError(FSession, GetLastError())
                        else begin
-                               UserInfo := Format('m=%s&p=%s&submit=%s', [HttpEncode(ID), HttpEncode(Pass), HttpEncode(SJIStoEUC('\93o\98^'))]);
+                               UserInfo := Format('m=%s&p=%s', [HttpEncode(ID), HttpEncode(Pass)]);
                 Header := 'Content-Type: application/x-www-form-urlencoded'#13#10;
                                UserAgent := Format('%s %s', [BELIB_2CH_UA, ClientUA]) + #13#10;
                 Header := Header + UserAgent;
                                if not HttpSendRequest(hRequest, PChar(Header), DWORD(-1), PChar(UserInfo), Length(UserInfo)) then
                                        MakeError(FSession, GetLastError())
                                else begin
-                                       if not InternetReadFile(hRequest, @Buf, SizeOf(Buf), cb) then
-                                               MakeError(FSession, GetLastError())
-                                       else if (Pos('cookie', Buf) = 0) or (Pos('"DMDM=', Buf) = 0)
-                     or (Pos('"MDMD=', Buf) = 0) then
-                                               MakeError(FSession, ERROR_INVALID_DATA)
+                    cb := Sizeof(Buf);
+                    Index := 0;
+                    ZeroMemory(@Buf, cb);
+                    if not HttpQueryInfo(hRequest, HTTP_QUERY_RAW_HEADERS_CRLF, @Buf, cb, Index) then
+                                       MakeError(FSession, GetLastError())
+                                       else if (Pos('Set-Cookie:', Buf) = 0) or (Pos('DMDM=', Buf) = 0)
+                     or (Pos('MDMD=', Buf) = 0) then begin
+                                               MakeError(FSession, ERROR_INVALID_DATA);
+                    end
                                        else begin
                         body := Buf;
-                        FSession.FDMDM := Copy(body, Pos('"DMDM=', body) + 6, Length(body));
+                        FSession.FDMDM := Copy(body, Pos('DMDM=', body) + 5, Length(body));
                         FSession.FDMDM := Copy(FSession.FDMDM, 1, Pos(';', FSession.FDMDM) - 1);
-                        FSession.FMDMD := Copy(body, Pos('"MDMD=', body) + 6, Length(body));
+                        FSession.FMDMD := Copy(body, Pos('MDMD=', body) + 5, Length(body));
                         FSession.FMDMD := Copy(FSession.FMDMD, 1, Pos(';', FSession.FMDMD) - 1);
                                        end;
                                end;