Sida 1 av 1

Python nybörjare, sträng vs, variabel

Postat: 27 oktober 2022, 17:01:28
av Wirewrap
Jag har en RPi som är ansluten till ett 4Gmodem (Huawei E5776s)
Jag försöker skicka SMS med en hempulad Pythonsnutt i RPin som pratar med modemet.
Jag är inte van vid Python.


Nedanstående kod fungerar som den ska.
Byter jag ut strängen "Ost Ost Ost" till variabeln Message så får jag en Exception.

Hur ska jag felsöka detta?

Kod: Markera allt

#!/usr/bin/python3
# -*- coding: UTF-8 -*-

import sys
import requests
import xml.etree.ElementTree as ET


def LoginToSMSGateway(sms_gateway_ip):
    api_url = '/api/user/login'
    post_data = '<request><Username>admin</Username><Password>YssAsQ==</Password>' #Hardcoded base64  pwd

    r = requests.post(url='http://' + sms_gateway_ip + api_url, data=post_data)
    if r.status_code == 200:
        result = False
        root = ET.fromstring(r.text)

        for results in root.iter('response'):
            if results.text == 'OK':
                result = True

        return result
    else:
        return False


def SendSMS(sms_gateway_ip):
    class SMS:
        Opened = False
        Message = "This is the message"


    api_url = '/api/sms/send-sms'
    post_data = '<?xml version="1.0" encoding="UTF-8"?><request><Index>-1</Index><Phones><Phone>0706123456</Phone></Phones><Sca></Sca>'\
    + '<Content> ' + "Ost Ost Ost" + ' </Content><Length>19</Length><Reserved>1</Reserved><Date>2022-01-10 21:37:54</Date></request>'

    headers = {'Referer': 'http://' + sms_gateway_ip + '/html/smsinbox.html'}

    r = requests.post(url='http://' + sms_gateway_ip + api_url, data=post_data, headers=headers)

    return r

def main():
  try:
   if LoginToSMSGateway('192.168.1.1'):
      print ('Logged in.')
      smsList = SendSMS('192.168.1.1')
      print (smsList.text)
      sys.exit(0);
  except Exception:
   print ('No joy');
   sys.exit(1);

if __name__ == "__main__":
    main()

Re: Python nybörjare, sträng vs, variabel

Postat: 27 oktober 2022, 17:07:23
av danwi
Det lär bero på att Message återfinns inne i en klass. Du skulle behöva skriva "SMS.Message" som det ser ut nu. I denna kod ser jag dock ingen anledning till "Class SMS:"-raden, den tillför inget förutom komplexitet.

Re: Python nybörjare, sträng vs, variabel

Postat: 27 oktober 2022, 20:32:53
av Wirewrap
@danwi Tack för hjälpen!
Så går det när jag samlar ihop kodfragment från olika ställen utan djupare förståelse.
Jag tog bort klassdeklarationen.