עבור לתוכן
Magic DevHub
MaorLinn

שימוש בHTTPPOST

Recommended Posts

שלום לכולם,

אני מנסה להשתמש בפונקציית HTTPPOST, ונכשל שוב ושוב.

למיטב הבנתי, הקריאה לפונקציה מתבצעת מתוך פקודת "עדכן" - אני מעדכן שדה מסוג BLOB בפונקציית HTTPPOST.
לפונקצייה אני שולח שני שדות - URL ו-BODY.
ה-BODY הוא שדה BLOB שמכיל FILE2BLB של קובץ טקסט.
קובץ הטקסט נבנה לפי הוראות הספק שאני מנסה לעבוד מולו (חברה למשלוח הודעות בשם CELLACT, מישהו מכיר?)

עם זאת, לא משנה מה אני עושה, כשאני פותח לקריאה את ה-BLOB המתקבל כתשובה, אני מקבל הודעה בנוסח - XMLString is empty.

מה אני עושה לא בסדר?

תודה,

מאור.

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

מאור שלום,

יש דוגמא קצרה, ברורה ועובדת בפרויקט ההדגמה שנקרא
Online Samples ,אשר מותקן במסגרת SETUP רגיל של XPA.

תכנית מספר 101 (XPA  2.4 וגם 2.5)

אמנם לא ציינת באיזה גרסה אתה משתמש, אבל לדעתי זה צריך לעבוד באופן זהה ביוניפאאס ואפילו ב- 9.

מהתיאור שלך נראה שהפעולות שביצעת נכונות, אבל אולי בכל זאת פספסת משהו באופן המימוש.

בכלל, מומלץ מאד לא לדלג על השימוש בפרויקטי ההדגמה שמותקנים עם מג'יק, - יש שם הדגמות מוצלחות במרבית התחומים.

בהצלחה.

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

היי גדי,

 

אכן לא ציינתי - אני עובד בגרסה 9.4 ולכן הדוגמה לא מתאימה לי.

האם יש עוד רעיונות שאוכל לנסות ולבדוק?

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

הי מאור,

האם ניסיתה להפעיל את הURL דרך ה BROWSER ,אני זוכר שהפעלתי את השירות פעם אבל לדעתי בעזרת WS.

עוד דבר שאתה יכול לעשות זה להתקין כלי שנקרה FIDDLER

<A href="http://www.telerik.com/download/fiddler">http://www.telerik.com/download/fiddler

בעזרתו תוכל לעקוב על כל התעבורה של שליחת בקשה וקבלת בקשה.

אם אתה רוצה שלח לי בפרטי בקשה שאתה מנסה להפעיל ,אנסה לעזור.

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

היי רומן,

אני לא יודע איך לקרוא דרך הBROWSER בשיטת POST.

בשיטת GET אני משרשר את הפרמטרים לכתובת ושולח הכל ביחד בתור URL, אבל ב-POST זה עובד אחרת, לא?

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

header צריך להיות 'Content-Type: text/xml'
כך אתה יכול לבדוק בשיתת POST אם זה יעזור לך:
<form action="<A href="http://servername/uniScripts/MGrqispi.dll">http://servername/uniScripts/MGrqispi.dll" method="post">
App: <input type="text" name="appname" />
Prg:<input type="text" name="prgname" />
<input type="submit" />
</form>
אם מנוע באוויר אתה אמור ליראות בקשה בברוקר

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

זה גם לא עזר.

נראה שאני מגיע לשרת בצד השני כי יש איזה DELAY עד שאני מקבל תשובה והתשובה היא תמיד XMLString is empty.

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

שלום

בניתי תוכנית לדוגמה במג'יק 9.4 שמדגימה את השימוש ב HTTPPOST להלן הפעולות שביצעתי

1. איתרתי את הדף <A href="https://www.boi.org.il/currency.xml">https://www.boi.org.il/currency.xml וראיתי שאני יכול לגשת אליו דרך הדפדפן במקרה שלי בכרום.
2. בניתי תוכנית דוגמה במג'יק 9.4.
       משימת אצווה ->עדכון->תנאי סיום = כן -> בדיקת תנאי אחרי בלי טרנזקציות
       בראשי לרשומה הגדרתי 2 משתנים מסוג BLOB הראשון משתנה נשלח = A והשני משתנה חוזר = B
       אחרי רשומה רשמתי פעולת עדכן משתנה BLOB חוזר  = B ובנוסחה רשמתי
      (' HTTPPost ('https://www.boi.org.il/currency.xml',A,'content-type: text/html      כאשר הפרמטר הראשון בפונקציה הוא ה URL, הפרמטר השני הוא משתנה ה BLOB נשלח = A (שמכיל NULL)
       והפרמטר השלישי content-type: text/html לפי ההדרכה שרומן נתן בהודעה קודמת.
       לאחר מכן רשמתי את התשובה לדיסק באמצעות פקודת חשב נוסחה Blb2File (B,'c:\temp\1.xml')
       משם אפשר לעשות כל פעולה על ה BLOB

עובד 100%

בברכה,

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

בוקר טוב איציק,

זה גם מה שאני עשיתי.

הבעיה היא שהחברה שמספקת את השרות (CELLACT), מצפה לקבל בתוך פרמטר A (השדה הנשלח) הודעה במבנה שהם מכתיבים, ולא NULL כמו שתיארת.

אני דאגתי לבנות קובץ בדיוק לפי התכתיב שלהם, ואז טענתי את הקובץ לתוך השדה A ע"י FILE2BLB.

ואני מקבל הודעה כאילו המבנה ששלחתי ריק, ואני יודע שהוא לא, ואני די בטוח שלא מדובר בתקלה בצד השרת, אלא שימוש לקוי שלי בפונקציה.

אבל אני אמשיך לריב עם זה...

תודה!

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

ניסית להציב את השדה (A) על המסך כדי לוודא שמה שאתה חושב שאתה שולח אכן נמצא שם?

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

שלום

נסה לבנות את התוכנית הבאה - המרה מצלזיוס לפרנהייט כולל שליחת פרמטר המעלות בצלזיוס

1. הגדר משתנה BLOB נשלח = A
2. הגדר משתנה BLOB חוזר = B
3. פתח קובץ טקסט ב דיסק תרשום בתוכו Celsius=40 (אל תרשום מעבר לכך כלום) שמור את הקובץ בפורמט Ansi קרא לקובץ param.txt
4. אחרי רשומה עדכן BLOB = A ב param.txt באמצעות הפקודה file2BLB
5. עדכן משתנה BLOB=B בפקודה
HTTPPOST (('http://www.w3schools.com/webservices/tempconvert.asmx/CelsiusToFahrenheit',A


נכון רק 2 פרמטרים

6. כתוב קובץ לדיסק לדוגמה blobReturn.html באמצעות הפקודה חשב נוסחה Blb2File (B,'c:\temp\BlobReturn.html')
7. הערך צריך להיות 104.

בברכה,

שתף אשכול


קישור ישיר להודעה
שתף באתרים אחרים

התחבר או הרשם על מנת להגיב.

עליך להיות משתמש רשום על מנת להגיב

צור חשבון

צור חשבון חדש בקהילה בקלי קלות.

רישום חשבון חדש

התחבר

משתמש קיים? התחבר.

התחבר עכשיו

×