@dovid כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:
או לגשת לפרמטר בדרך שניסית לגשת לכותרת:
var city = Request.Params["cityName"];
זה לא עובד (דוטנט 3, לא יודע מה בחדשים יותר)
מה שכן עובד זה:
Request.Query["cityName"].ToString();
@dovid כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:
או לגשת לפרמטר בדרך שניסית לגשת לכותרת:
var city = Request.Params["cityName"];
זה לא עובד (דוטנט 3, לא יודע מה בחדשים יותר)
מה שכן עובד זה:
Request.Query["cityName"].ToString();
@dovid כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:
אלא שבצד לקוח יש לך בעיות "בירוקרטיות" עם הדפדפן שמסרב לאפשר לקוד לקבל את מבוקשו כי הוא רץ תחת דומיין אחר (במקרה שלך localhost).
לא הבנתי מה זה שונה מכל פניה לשרת. יש את הצד הפונה יהיה מי שלא יהיה, וברור שהוא פונה לגורם חיצוני שאינו הוא.
מה מיוחד במקרה שלי שבו localost פונה ל-gov.il?
כלומר אתה טענת שבדפדפן עובד (התכוונת לשורת הכתובת) ובשרת (התכוונת לאנגולר)
כרגיל טעיתי, וכרגיל אני כאן כדי ללמוד.
יש"כ לכל המסייעים עד עתה.
כמצוות הרבנים @יוסף בן שמעון (איך מאזכרים שם עם רווח באמצע?) ו-@dovid, אני מנסה לבצע זאת דרך השרת.
נתקלתי בבעיה בשליחת הפרמטר של שם העיר העברי לשרת, חיפשתי קצת ומצאתי שצריך לקודד קודם את השם.
עשיתי את זה באמצעות encodeURI בצד האנגולר, הכנסתי ל-header, ואכן עובר ערך מקודד לשרת. דוגמא להידר (עיר:ירושלים ) המופיע ב-debug של chrome:
"cityname: %D7%99%D7%A8%D7%95%D7%A9%D7%9C%D7%99%D7%9D"
הבעיה נכון לעכשיו היא, שהשרת משום מה לא יודע לפענח את המידע בחזרה:
כך נראה הקוד באנגולר:
let httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json;charset=utf-8',
cityName: encodeURI(currCityName)
}),
};
return this.http.get<Neighborhood[]>(this.URL, httpOptions);
ב- .net הקוד הוא כך
string currCity= Request.Headers.FirstOrDefault
(c=>c.Value== "cityName").ToString();
currCity = System.Net.WebUtility.UrlDecode(currCity);
אני מקבל ב-currCity את הסטרינג הבא "[,]" , לא ברור לי מה המשמעות של זה (מערך ריק?)
ניסיתי גם את הסינטקס הזה:
Request.Headers.FirstOrDefault (c=>c.Key== "cityName").Value;
אבל אני מקבל null ב-currCity.
איך בדיוק מתפעלים את הפיענוח של ה-URI?
לחילופין יש דרך אחרת להעביר מידע עברי ב-headers?
@dovid כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:
זה אכן לא יכול לעבוד מאנגולר כי זה צד לקוח וזה מביא לשגיאת CORS.
כלומר מה שכתבת :
אין דרך בעולם לדעת אם קליינט שלח או שרת.
לכאורה אינו מדוייק, אמת?
@dovid כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:
@yyy אני כעת רואה שלפעמים זה עובד ולפעמים לא,
זה אכן משונה, אולי זה קשור לפרוקסי של אנגולר (שזה רלוונטי במצב dev בלבד, בפרודקשיין הכל מתחיל ונגמר בדפדפן ולכן תמיד יהיה CORS).
כשאני שולח ישר מה-URL של הדפדפן זה תמיד עובד.
@יוסף-בן-שמעון כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:
@yyy אולי יש כאן איזה קצר תקשורתי
אתה מנסה לשלוח מהדפדפן בקשה ל API, לשם כך אתה משתמש בקליינט של אנגולר HttpClient?
ומה השגיאה שחוזרת?
זה הקוד האנגולרי:
getNeighborhoodsByCity(cityName: string, nStartWith = "-1"): Observable<any[]> {
let tmpURL = this.neighborhoodsByCityURL;
tmpURL = tmpURL.replace("MyCityName", cityName);
if (nStartWith != "-1") {
tmpURL = tmpURL.replace("startWithKey=-1", "startWithKey=" + nStartWith)
}
return this.http.get<any[]>(tmpURL);
}
(אני מתקשה להזיח כראוי, מקווה שנראה סביר)
האמת שאני כבר ממש לא מבין. לפעמים זה עובד ולפעמים לא, בלי שום חוקיות שמצאתי.
דוגמא:
כאשר הערכים שנשלחו בפרמטר של העיר הם
אבו קורינאת (שבט) --> תקין
ירושלים --> לא תקין
בית שמש --> תקין
בית שמש --> תקין
בית שמש --> תקין
ירושלים --> תקין
ירושלים --> לא תקין
ועוד כהנה וכהנה...
השגיאה היא מסוג CORS, כפי שניתן לראות.
להלן צילום מסך חלקי של השגיאה:
@יוסף-בן-שמעון כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:
@yyy כשהסרת את ההידר host זה לא עבד? אז כנראה זה ההידר שהוא מבקש, תנסה להוסיף אותו בבקשה מהשרת
למיטב הבנתי אי אפשר.
@yyy כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:
@יוסף-בן-שמעון
ממה שניסיתי פוסטמן ודפדפן עובד. הרצה מ-localhost לא עובד (סביבת אנגולר). ניסיתי להסיר בפוסטמן את ה-header של host וזה גם לא עבד כך שאולי זה קשור לזה.
אשמח להתבדות.
רק להדגיש בכל הסביבות וידאתי שאין שום שגיאה ב-URL ובסינטקס ורק הרספונס חוזר בעייתי.
@יוסף-בן-שמעון
ממה שניסיתי פוסטמן ודפדפן עובד. הרצה מ-localhost לא עובד (סביבת אנגולר). ניסיתי להסיר בפוסטמן את ה-header של host וזה גם לא עבד כך שאולי זה קשור לזה.
אשמח להתבדות.
לאחר בדיקה נוספת ה-URL חסום לפניות שרת, רק קליינט יכול לגשת, כך שפתרון מלא אין כאן.
@by6199 כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:
@dovid כתב בAPI רחובות לפי שכונות\ שכונות לפי ערים:
@באתי-לעזור לא הבנתי. נניח שיש לי מלא שרתים.
תציע לי דרך לפחות לאחת משני הדרישות של השואל:
א. רשימת שכונות לפי עיר
ב. רשימת רחובות לפי עיר+שכונהכדאי להסתכל על האתר של רשות המסים https://www.nadlan.gov.il/ ייתכן ואפשר להתחקות מהיכן המידע שלו לפי שכונות
באמת שווה בדיקה, ברפרוף ראיתי שיש להם API של השלמה אוטומטית, וזה אכן כולל שכונות, אבל לא דטא-בייס מסודר.
מכיוון שזה אתר ממשלתי לא ברור לי מה האינטרס שלהם לא לפרסם את זה רשמי, אא"כ הסנדלר הולך יחף וגם הם משתמשים במיקור חוץ.
@dovid כתב בselect של sql לא עובד על עברית:
ככה עובד?
where HeCityName = N'ירושלים';
כן. לתועלת המחפשים בעתיד, ה-N מודיע שמדובר בנתון של מחרוזת יוניקוד
יש"כ.
@dovid יש"כ
ממש בבחינת "טרם יקראו ואני אענה...".
בכסף ידוע על משהו? אני מתקשה להאמין שאתרים כמו יד 2 מתחילים את העבודה מ-0. (למרות שספציפית לגביהם בדקתי, וזה נראה שהמידע מגיע מהשרתים שלהם, אבל בבק-אנד כנראה הם פונים למישהו [השערה בלבד - לא לסקול אותי]))
ייבאתי קובץ ערים של משרד הפנים מסוג csv אל תוך mssms.
(הייבוא נעשה כ-flat file ועבר קידוד ל-utf-8 לשם כך).
כעת כשאני מריץ שאילתת SQL על תוכן עברי אין תוצאות.
זה עובד:
select *
from Cities1
where enCityName ='jerusalem';
אבל זה לא עובד
select *
from Cities1
where HeCityName ='ירושלים';
אשמח לעזרה
יש חינמי בנמצא?
תודה!!
@ivrtikshoret עוד לא הגעתי לזה...
נתון קוד
#include <iostream>
struct Grade {
char profession[10];
int percent;
};
struct Student {
char name[10];
char email[20];
Grade grdArr[10];
};
int main()
{
Student studentsArr[5];
Student* stdPtr = studentsArr;
*stdPtr->email ='1234';
}
2 שאלות:
א. שורה 18 מאפשרת הצבת החל מ 0 תוים ועד 4. בכל מקרה יוצב התו האחרון (במקרה הזה 4).
למה המערכת מאפשרת יותר מתו אחד במצביע מסוג CHAR בודד?
ב. איך מציבים את האימייל כולו בצורה תקינה?
תודה רבה!
@A0533057932 כתב בהמרת קובץ ג'יבריש כבד:
@yyy תבדוק בNOTEPAD++ מה הקידוד של הקובץ (כלומר האם הוא גם מקודד וגם מוצג בצורה תקינה או רק מוצג תקין)
כלומר מקודד בUTF-8 או ANSIנ.ב. אולי ההמרה פה תהיה תקינה
https://www.convertcsv.com/csv-to-json.htm
יש באמת המרה תקינה באתר שציינת. הבעיה שהאתר קורס בקבצים כבדים. אני מנסה לפצל את האקסל לקבצים קטנים.
שאלת בּוּר:
איך "תופסים" באקסל משורה X עד Y (מדובר על כ-50,000 רשומות,לא שייך ידני)?
@A0533057932 כתב בהמרת קובץ ג'יבריש כבד:
@yyy מה הקידוד של הCSV?
בתחילה לא בדקתי אפילו איך נראה קובץ CSV, כעת בדקתי כדי לחפש את הקידוד והנה אני רואה שזה קובץ Excel... ובכן יש לי קובץ CSV בקידוד תקין, כלומר הוא מציג לי עברית.
השאלה שלי היא על איך להפוך אותו ל-JSON עברי.
@A0533057932 כתב בהמרת קובץ ג'יבריש כבד:
@yyy אולי תמיר קודם לCSV?
לא ראיתי שזה עוזר. זה נשאר ג'יבריש.